首页 > 解决方案 > 此页面现在无法正常工作如果问题仍然存在,请联系网站所有者。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 函数,我不确定

标签: pythondjangodjango-modelsdjango-viewsdjango-templates

解决方案


HTTP 错误 405 是“不允许的方法”。这意味着您正在尝试执行一些未定义或不允许的操作。

您的问题是您在“DeletePostView”中使用“DetailView”,它应该使用“DeleteView”。

class DeletePostView(DeleteView):
    ....

这里的问题是“DetailView”没有定义 post 方法。


推荐阅读