python - 此页面现在无法正常工作如果问题仍然存在,请联系网站所有者。HTTP ERROR 405 试图在 django 中解决这个问题?
问题描述
当我单击删除按钮时,出现错误:此页面现在无法正常工作问题仍然存在,请联系网站所有者。HTTP 错误 405
这是我的 view.py 文件:
from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse
from django.views.generic import ListView,DetailView, CreateView, UpdateView, DeleteView
from .models import Post, TaskCategory
from .forms import PostForm
from django.urls import reverse_lazy
class DeletePostView(DetailView):
model = Post
template_name = 'delete_post.html'
success_url = reverse_lazy('PostPage')
urls.py 文件:
from django.urls import path
# from . import views
from .views import PostHomeView,PostDetail,NavFooter,PostPageView,AddPost,UpdatePost,DeletePostView
urlpatterns = [
path('', PostHomeView.as_view(), name ='home'),
path('PostDetail/<int:pk>', PostDetail.as_view(), name ='post_detail'),
path('PostPage/', PostPageView, name ='post_page'),
path('AddPost/', AddPost.as_view(), name = 'add_post'),
path('PostDetail/UpdatePost/<int:pk>', UpdatePost.as_view(), name = 'update'),
path('DeletePost/<int:pk>/', DeletePostView.as_view(), name = 'delete'),
]
HTML delete_page.html 文件:
{% extends "nav_footer.html" %}
{% load static %}
{% block content %}
<div class="form-group">
<p>{{ post.task_title }}</p>
<p>{{ post.task_discription }}</p>
<p>{{ post.recommended_tools }}</p>
<p>{{ post.budget }}</p>
<form method="post">
{% csrf_token %}
<button class="btn btn-secondary">Delete</button>
</form>
</div>
{% endblock %}
这是modes.py
from django.contrib.auth.models import User
from django.db import models
from django.urls import reverse
class TaskCategory(models.Model):
category_title = models.CharField(max_length=50)
def __str__(self):
return self.category_title
class Post(models.Model):
task_title = models.CharField(max_length=250)
task_discription = models.CharField(max_length=250)
task_category = models.ForeignKey(TaskCategory, on_delete=models.CASCADE)
recommended_tools = models.CharField(max_length=250)
budget = models.IntegerField(default=0)
def __str__(self):
return self.task_title + ' | ' + self.task_discription + ' | ' + str(self.task_category) + ' | ' + self.recommended_tools + ' | ' + str(self.budget) + ' | ' + str(self.id)
def get_absolute_url(self):
return reverse('post_detail', args=[str(self.id)])
我认为问题出在某处 revers_lazy 函数,我不确定
解决方案
HTTP 错误 405 是“不允许的方法”。这意味着您正在尝试执行一些未定义或不允许的操作。
您的问题是您在“DeletePostView”中使用“DetailView”,它应该使用“DeleteView”。
class DeletePostView(DeleteView):
....
这里的问题是“DetailView”没有定义 post 方法。
推荐阅读
- flutter - 如何在颤振流中正确调用 S3 文件?
- geometry - 如何在 Yelp 或 Uber 服务中使用 S2?
- javascript - 在 Bootstrap 5 中实现暗/亮/...模式的最合适方法是什么?
- python - GridSearchCV 没有为 xgboost 选择最佳超参数
- swift - 用新数据重新加载 PageViewController
- uwp - ObservableCollection 在 UWP 和 WASM 上的行为不同
- nginx - 在 nignx 中动态重写路径
- module - 如何使用 Xquery 为 MarkLogic 实现自动递增数字主键
- flutter - GetStorage 不保存列表编辑
- vector - 根据另一列的相应行值创建行的子集?