我几天前开始学习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 。
但事实并非如此。我想知道原因吗?
答案 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>
谢谢。