代码之家  ›  专栏  ›  技术社区  ›  Eric Palakovich Carr

Django无法路由URL(简单问题)

  •  0
  • Eric Palakovich Carr  · 技术社区  · 15 年前

    我做了件蠢事,不知道是什么。我在Django项目的根目录中有以下urls.py:

    from django.conf.urls.defaults import *
    from django.conf import settings
    
    urlpatterns = patterns('',
        (r'^$', include('preview_signup.urls')),
    )
    

    在我的预览注册模块(django app)中,我有以下urls.py文件:

    from django.conf.urls.defaults import *
    
    urlpatterns = patterns('django.views.generic.simple',
        (r'^thanks/$', 'direct_to_template', {'template': 'thankyou.html'})
    )
    

    上面的urls.py在我访问时不起作用 http://localhost:8000/thanks/ . 但如果改成这样:

    from django.conf.urls.defaults import *
    
    urlpatterns = patterns('django.views.generic.simple',
        (r'^$', 'direct_to_template', {'template': 'thankyou.html'})
    )
    

    我去 http://localhost:8000/ 它很好用。

    我做错什么了?

    2 回复  |  直到 12 年前
        1
  •  3
  •   ljh    12 年前

    此代码应该有效:

    urlpatterns = patterns('',
        (r'^', include('preview_signup.urls')),
    )
    

    $刚刚删除。

        2
  •  1
  •   Sam Dolan    15 年前

    当有问题时(即使没有),仔细阅读 django docs . 以下是上述链接的摘录:

    from django.conf.urls.defaults import *
    
    urlpatterns = patterns('',
        (r'^weblog/',        include('django_website.apps.blog.urls.blog')),
        (r'^documentation/', include('django_website.apps.docs.urls.docs')),
        (r'^comments/',      include('django.contrib.comments.urls')),
    )
    

    请注意,中的正则表达式 此示例没有$ (字符串结尾匹配字符)但执行 包括一个尾随斜杠。无论何时 django遇到include(),它会被砍掉 关闭URL的任何匹配部分 到那一点,然后发送 包含的剩余字符串 用于进一步处理的URLCONF。