【问题标题】:Django urls.py and views.py behaviour -Django urls.py 和 views.py 行为 -
【发布时间】:2013-07-22 18:28:56
【问题描述】:

我目前正在尝试使用 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。

【问题讨论】:

  • 你的 rool url conf 是什么样的?如果我的猜测是正确的,(r'^$','ulogin.views.index'), 应该可以工作
  • 天哪,我太傻了,是的,有效
  • karthikr 非常感谢您
  • 不客气。 (r'^ucode/(\d+)/$', 'ulogin.views.index') 也会给你带来错误。
  • 我会做一个答案解释。

标签: django django-views django-urls


【解决方案1】:

首先,要匹配的模式

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

您可以在此处阅读有关named URL groups 的更多信息

【讨论】:

  • 我认为他正在阅读 django polls 教程,我认为他还没有遇到命名参数。
  • 我正在阅读投票教程。但我非常感谢您的帮助!
【解决方案2】:

它不起作用,因为当涉及到 django url 时,网络服务器的根目录以空字符串为特征,就像这样 -> ^$。所以,只需将^/$ 更改为^$,就可以了。

【讨论】:

    猜你喜欢
    • 2012-12-10
    • 1970-01-01
    • 2022-07-06
    • 2018-06-05
    • 2017-06-11
    • 2021-06-29
    • 2018-09-09
    • 2021-11-08
    • 1970-01-01
    相关资源
    最近更新 更多