Django urls.py和views.py行为 -

时间:2013-07-23 15:21:30

标签: django django-views django-urls

我正在尝试使用Django并根据官方网站上的教程创建应用程序。

所以我的urls.py看起来像是:

urlpatterns = patterns('',
    (r'^/$','ulogin.views.index'), #why doesn't this work?
    (r'^ucode/$', 'ulogin.views.index'),
    (r'^ucode/(\d+)/$', 'ulogin.views.index'),
)

我的views.py看起来像:

def index(request):
    return HttpResponse("Hello, world. You're at the poll index.")

def redirect_to_index(request):
    return HttpResponseRedirect('/ucode/')

当我运行服务器检查测试网址时,http://127.0.0.1:8000/ucode正确显示“Hello,world ... etc”,并且工作得很好。我一直在搞乱urls.py,但我不知道如何让http://127.0.0.1:8000/显示ulogin.views.index。

2 个答案:

答案 0 :(得分:2)

它不起作用,因为当谈到django url时,web服务器的根的特征是空字符串,如此 - > ^$。因此,只需将^/$更改为^$即可。

答案 1 :(得分:2)

首先,要匹配的模式

(r'^/$','ulogin.views.index')

应该是

(r'^$','ulogin.views.index')

此外,尝试匹配以下网址会引发错误

(r'^ucode/(\d+)/$', 'ulogin.views.index'), 

因为没有将\d+作为参数的查看方法。

我推荐的解决方案是:

(r'^ucode/(<?P<id>[\d]+)/$', 'ulogin.views.index'),

然后

def index(request, id=None):
    return HttpResponse("Hello, world. You're at the poll index.")

您可以在此处详细了解named URL groups