Django:在单个URL.py中包含其他URL模式

Django:在单个URL.py中包含其他URL模式,django,django-urls,Django,Django Urls,我在myproject.myapp.url中执行类似操作: from django.conf.urls.defaults import * urlpatterns = patterns('myproject.myapp.views', (ur'^$', 'index'), (ur'^browse/$', 'browse'), (ur'^request/new/$', 'new_request'), (ur'^(?P<url_key>[-a-zA-Z0

我在
myproject.myapp.url
中执行类似操作:

from django.conf.urls.defaults import *

urlpatterns = patterns('myproject.myapp.views',
    (ur'^$', 'index'),
    (ur'^browse/$', 'browse'),
    (ur'^request/new/$', 'new_request'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/$', 'view1'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/asdf$', 'view2'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/qwer$', 'view3'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/zxcv$', 'view4'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/tyui$', 'view5'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/ghjk$', 'view6'),
    (ur'^(?P<url_key>[-a-zA-Z0-9]+)/bnm/more-looong-url/$', 'view7'),
    ...
)
但它似乎会导致单元测试(包括urlresolvers)出现问题


这里有没有更好的方法来“重构”正则表达式的公共部分(
)呢?

我不是django专家,但是“view1”项不匹配它下面的所有其他项吗,因为它的末尾没有“$”?因此,其他视图没有机会匹配。

我不是django专家,但是“view1”项不匹配它下面的所有其他条目吗,因为它的末尾没有“$”?因此其他视图没有机会匹配。

也许您可以简化
myproject.myapp.url
中的表达式,而将信息作为参数传递给
myproject.myapp.views
中的函数

我不确定您的测试出了什么问题,但一般来说,您可以在
myproject.myapp.views
中做更多的工作,因为您不必完全基于正则表达式逻辑


myproject.myapp.views
中的函数将是一个调用view1、view2等的交换机也许您可以简化
myproject.myapp.url
中的表达式,并将信息作为参数传递给
myproject.myapp.views
中的函数

我不确定您的测试出了什么问题,但一般来说,您可以在
myproject.myapp.views
中做更多的工作,因为您不必完全基于正则表达式逻辑


myproject.myapp.views
中的功能将是一个交换机,它可以调用view1、view2等

我不认为您可以用这条线路做您想做的事情:

(ur'^(?P<url_key>[-a-zA-Z0-9]+)/', include('myproject.myapp.urls2'))

我不认为你能用这条线做你想做的事:

(ur'^(?P<url_key>[-a-zA-Z0-9]+)/', include('myproject.myapp.urls2'))

它造成了什么问题?使用include(“”)通常非常简单。您能描述一下它给出的错误,或者输出与您预期的不同吗?它导致了什么问题?使用include(“”)通常非常简单。您能描述一下它给出的错误,或者输出与您期望的有什么不同吗?+1将catch all放在末尾,或者每个url只包含$。+1将catch all放在末尾,或者每个url只包含$。嗯,我已经解决了测试问题,仍然采用了我最初的解决方案,但这是一个好建议。所以我选择这个作为答案。:)嗯,我已经解决了我的测试问题,仍然采用了我原来的解决方案,但这是一个很好的建议。所以我选择这个作为答案。:)
from django.conf.urls.defaults import *

URL_KEY = ur'^(?P<url_key>[-a-zA-Z0-9]+)'

urlpatterns = patterns('myproject.myapp.views',
    (ur'^$', 'index'),
    (ur'^browse/$', 'browse'),
    (ur'^request/new/$', 'new_request'),
    (URL_KEY+ur'/$', 'view1'),
    (URL_KEY+ur'/asdf$', 'view2'),
    (URL_KEY+ur'/qwer$', 'view3'),
    ...etc
)