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
)