多个URL指向没有冗余的单个资源

时间:2014-12-17 18:58:20

标签: url django-1.7

在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')

想法?

1 个答案:

答案 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()或者做你正在做的其他事情。