【发布时间】:2014-04-03 14:56:31
【问题描述】:
我对 Python 有一些经验,但我对 Django 和一般的 Web 开发还是很陌生。
我有一个问题,我设置了两个 URL,但只会呈现其中一个:即 URL 模式列表中的第一个。 我才刚刚开始,所以基本上,我现在只有一个显示用户注册表单的页面和一个基本的“Hello, World”页面。
给定当前配置,并运行开发服务器,无论我转到 URL localhost:8000/mysite 还是 localhost:8000/registration,我都会被带到注册表单页面。如果我在 mysite/myapp/urls.py 的 urlpatterns 列表中颠倒两者的顺序,两个 URL 都会将我带到“Hello, World”页面。
我知道我一定做错了什么,但我似乎无法弄清楚。谢谢!
mysite/myapp/urls.py 看起来像这样:
from django.conf.urls import patterns, url
from myapp import views
urlpatterns = patterns('',
url(r'^$', views.registration, name='registration'),
url(r'^$', views.index, name='index'),
)
我的文件 mysite/urls.py 如下所示:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^mysite/', include('myapp.urls')),
url(r'^registration/', include('myapp.urls')),
url(r'^admin/', include(admin.site.urls)),
)
和 myapp/views.py 看起来像这样:
from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from myapp.forms import UserRegistrationForm
def index(request):
return HttpResponse("Hello, world. You're at the main page for MySite!")
def registration(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
# stuff gets done with form
return HttpResponseRedirect('/registration/')
else:
form = UserRegistrationForm()
return render(request, 'myapp/registration_form.html', {
'form': form,
})
【问题讨论】: