【问题标题】:Multiple urls pointing to a single resource with no redundancy多个 url 指向一个没有冗余的资源
【发布时间】:2014-12-17 18:58:20
【问题描述】:

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

想法?

【问题讨论】:

  • 我首先想到的是一个循环。
  • @TobiMarg 有一种干净利落的方法,我前段时间在某个地方看到过,但我现在可以找到类似的东西。而且我无法通过循环将其可视化,您能进一步解释一下吗?
  • 我在文档中没有找到任何关于更好方法的信息(我很久没有使用 django),所以我用循环添加了我的想法作为答案。

标签: url django-1.7


【解决方案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() 或者做你对他们做的其他事情。

【讨论】:

  • 这是一种有效的方法,谢谢,如果有人提出更好的想法,我仍然会保持开放状态。
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多