使用 post 请求找不到 Django 页面

所以我是 Django 新手,我正在尝试创建一个 HTML 表单(只需按照名称输入教程进行操作),我可以输入名称,但无法直接进入 /thanks.html 页面。


$ views.py

from django.http import HttpResponseRedirect

from django.shortcuts import render


from .forms import NameForm


def get_name(request):

    # if this is a POST request we need to process the form data

    if request.method == 'POST':

        # create a form instance and populate it with data from the request:

        form = NameForm(request.POST)

        print(form)

        # check whether it's valid:

        if form.is_valid():

            # process the data in form.cleaned_data as required

            # ...

            # redirect to a new URL:

            return HttpResponseRedirect('/polls/thanks.html')


    # if a GET (or any other method) we'll create a blank form

    else:

        form = NameForm()


    return render(request, 'name.html', {'form': form})

$ name.html

<html>

  <form action="/polls/thanks.html" method="post">

      {% csrf_token %}

      {{ form }}

      <input type="submit" value="Submit">

  </form>

<html>

$ /mysite/urls

from django.contrib import admin

from django.urls import include, path


urlpatterns = [

    path('polls/', include('polls.urls')),

    path('admin/', admin.site.urls),


]

$ mysite/polls/urls.py


from django.urls import path


from polls import views


urlpatterns = [

    path('', views.get_name, name='index'),

]

当我进入该页面时,我可以很好地输入我的名字,但是当我提交时,我得到


Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:


polls/ [name='index']

admin/

The current path, polls/thanks.html, didn't match any of these.

即使thanks.html位于/polls内


抱歉,如果修复非常简单,我只是以前没有使用过 Django。


犯罪嫌疑人X
浏览 99回答 2
2回答

Cats萌萌

创建一个视图,thanks在views.py中调用def thanks(request):&nbsp; &nbsp; return render(request, 'thanks.html')现在,通过添加到投票应用程序的 urls.py将/poll/thanks/URL 链接到模板。thankspath('thanks/', views.thanks, name='thanks')$ mysite/polls/urls.pyfrom django.urls import pathfrom polls import viewsurlpatterns = [&nbsp; &nbsp; path('thanks/', views.thanks, name='thanks'),]最后在 get_name 视图中更改以下行return HttpResponseRedirect('/polls/thanks/')

暮色呼如

改变你的主要urls.py:url(r'^polls/',&nbsp;include('polls.urls')),在您的应用程序中urls.py:url(r'^$',&nbsp;views.get_name,&nbsp;name='index'),并且在您views.py更改为:if&nbsp;form.is_valid(): &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;process&nbsp;the&nbsp;data&nbsp;in&nbsp;form.cleaned_data&nbsp;as&nbsp;required &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;redirect&nbsp;to&nbsp;a&nbsp;new&nbsp;URL: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;render(request,&nbsp;'thanks.html')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python