我正在django中制作一个应用程序。这是我的index.html页面。

<!DOCTYPE html>

<html>
<head>
    <title>The index page</title>
</head>
<body>
    <h1>Choose the name of student</h1>
    <form action= "{% url 'detail' %}" method="post" enctype="multipart/form-data">
    {% csrf_token %}
            <select name="namedrop">
                {% for name in student_list %}
                <option>{{name.stuname}}</option>
                {% endfor %}

            </select>

    <input type="submit" name="submit">
    </form>
</body>
</html>


它会创建一个学生姓名的下拉列表。当我选择一个并单击“提交”按钮时,它将打开一个新的页面详细信息,但无法在页面上显示任何内容。它显示的错误是无法加载资源:服务器响应状态为405(未允许方法)。
我的views.py如下所示:

from .models import student,subject
from django.views import generic
from django.views.generic import View
from django.shortcuts import render

class IndexView(generic.ListView):
    template_name= 'studinfo/index.html'
    context_object_name= 'student_list'

    def get_queryset(self):
        return student.objects.all()

class DetailView(generic.DetailView):
    model=  student,subject
    template_name='studinfo/detail.html'


def getname(request):
    if request.method=='POST':
        name=request.get['namedrop']
        return render(request, 'detail.html', {'name':name})


这是urls.py

from django.conf.urls import url
from . import views
from .models import student

urlpatterns= [
    url(r'^$',views.IndexView.as_view(),name='index'),
    url(r'^detail/$',views.DetailView.as_view(),name='detail'),

]


from .models import student
from django.views import generic
from django.views.generic import View
from django.http import Http404
from django.shortcuts import render



class IndexView(generic.ListView):
    template_name= 'studinfo/index.html'
    context_object_name= 'student_list'

    def get_queryset(self):
        return student.objects.all()

def detail(request,student_id):
    try:

        p = student.objects.get(pk=student_id)
    except student.DoesNotExist:

        raise Http404("Poll does not exist")
    return render(request, 'studinfo/detail.html', {'name': p})


这是我现在的看法。现在在/ studinfo / detail /中引发错误..TypeError
detail()恰好接受2个参数(给定1个)
请求方法:POST
500内部服务器错误)

最佳答案

DetailView无法处理发布请求。 DetailView仅允许获取请求。当您使用错误的请求方法时,将引发405 method not allow错误,因为它不允许发布请求它引发405错误。

我看到您有一个getname视图。我认为您正在尝试使用它。如果不是这样,则您必须将url更改为接受发布请求的视图。有关DetailView的更多信息,请阅读here

关于python - 无法加载资源:服务器在django中以405状态(未允许方法)响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45694919/

10-14 19:34