这个页面现在不能工作,如果问题仍然存在,请联系网站所有者.HTTP错误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 file:

{% 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是"方法不允许"。这意味着您正在尝试执行一些未定义或不允许的操作。

你的问题是你正在使用"DetailView"在你的deletepostview中,应该使用deleteview相反。

class DeletePostView(DeleteView):
....

这里的问题是"DetailView"没有定义post方法

相关内容