在Django1.11表单中,我该如何处理url?

时间:2017-05-27 18:52:30

标签: python django forms

我几天前开始学习Django,我不知道如何处理表单网址。

myproject / urls.py文件如下。

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^form/', include('app.urls'))
]

这是myproject / app / urls.py文件。

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

urlpatterns = [
    url(r'^$', views.get_name, name = 'get_name'),
    url(r'^/your-name/$', views.your_name, name = 'your_name')
]

这是app / views.py文件。

from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from .forms import NameForm

def get_name(request):
    if request.method == 'POST':
        form = NameForm(request.POST)
        if form.is_valid():
            return HttpResponseRedirect('/thanks/')
    else:
        form = NameForm()
    return render(request, 'name.html', {'form' : form})

def your_name(request):
    return HttpResponse("Hello, world.")

app / forms.py文件。

from django import forms

class NameForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=100)

app / name.html文件。

<form action="/your-name/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>

单击提交按钮时,会发生异常。

  

当前路径,您的姓名/,与其中任何一个都不匹配。

点击提交按钮后, http://localhost:8000/your-name/ 。 我认为这是错的。我猜必须出现 http://localhost:8000/form/your-name/ ,并且必须在浏览器上打印 Hello,world

但事实并非如此。我想知道原因吗?

1 个答案:

答案 0 :(得分:1)

确保,网址是正确的。

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

urlpatterns = [
    url(r'^$', views.get_name, name = 'get_name'),
    url(r'^your-name/', ProductView.as_view()),
    url(r'^register/$', RegisterFormView.as_view(), name='register'),
]

在使用应用名称调用url之后,它肯定会正常工作。

<form action="/app_name/your-name/" method="post">
    {% csrf_token %}
    {{ form }}
    <input type="submit" value="Submit" />
</form>

谢谢。