在django的urls.py中我得到了这个:
url(r'^main$', 'views.send_partial', name='main'),
url(r'^login$', 'views.send_partial', name='login'),
url(r'^signup$', 'views.send_partial', name='signup'),
url(r'^help$', 'views.send_partial', name='help'),
我讨厌重复代码,所以我想摆脱为它应该处理的每个url重复使用相同的函数。我无法知道这是如何在任何地方完成的。所以我期待的是:
url('views.send_partial',
r'^main$', name='main,
r'^login$', name='login',
r'^signup$', name='signup',
r'^help$', name='help')
想法?
答案 0 :(得分:1)
我在documentation (django.conf.urls)中找不到任何内容,但我认为可以通过模式和名称的列表/字典来解决。
url_dict = {'main': 'r'^main$', 'login': r'^login$',
'signup': r'^signup$', 'help': r'^help$'}
# This part could also be put into a function taking the
# dictionary and the handler and returning urlpatterns
urls = []
for name, pattern in url_dict.items():
urls.append(url(pattern, 'views.send_partial', name=name))
urlpatterns = patterns('', *urls)
首先,您创建一个将名称映射到模式的字典(也可能类似于列表列表)。然后循环遍历字典,使用url()
创建urlpatterns列表。最后,你让他们通过patterns()
或者做你正在做的其他事情。