为什么我的django url conf未能包含其他应用程序url模块

时间:2012-09-10 12:10:57

标签: python django

我有一个根网址配置内容为:

的项目
 from django.conf.urls import patterns, include, url
import funnytest
urlpatterns = patterns(
url(r'^funnytest/', include('funnytest.urls')),
url(r'^helloworld/', funnytest.views.hello),
)

funnytest是这个项目的应用程序,在funnytest中我写了一个模块urls.py来配置这个应用程序的请求:

from django.conf.urls import patterns, include, url
from views import *
urlpatterns = patterns(
url(r'^hello/$', hello),
)

当我访问localhost / funnytest / hello /时会返回一个dispath错误,表示没有这样的模式

当我访问localhost / helloworld时,它运作良好。

为什么呢,应该如何配置〜

1 个答案:

答案 0 :(得分:5)

如果你看一下模式函数的定义:

def patterns(prefix, *args):
    pattern_list = []
    for t in args:
        if isinstance(t, (list, tuple)):
            t = url(prefix=prefix, *t)
        elif isinstance(t, RegexURLPattern):
            t.add_prefix(prefix)
        pattern_list.append(t)
    return pattern_list

你会看到模式在url模式列表之前采用参数'prefix'。

在两个文件中尝试以下操作:添加一个空字符串作为模式的第一个参数。

from django.conf.urls import patterns, include, url
import funnytest
urlpatterns = patterns(
    '',
    url(r'^funnytest/', include('funnytest.urls')),
    url(r'^helloworld/', funnytest.views.hello),
)

from django.conf.urls import patterns, include, url
from views import *
urlpatterns = patterns(
    '',
    url(r'^hello/$', hello),
)