1

我目前正在试验 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/')

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

4

2 回答 2

2

它不起作用,因为涉及 django urls 的 web 服务器的根以空字符串为特征,就像这样 -> ^$。因此,只需更改^/$^$,它就会起作用。

于 2013-07-23T15:30:10.587 回答
2

首先,要匹配的模式

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

应该

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

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

(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.")

您可以在此处阅读有关命名 URL 组的更多信息

于 2013-07-23T15:30:15.623 回答