Skip to main content
 首页 » 编程设计

python之pattern() 中每个 url() 的 Django 可选 url 参数

2025年05月04日41shihaiming

在 Django 的 urls.py 中,我知道您可以指定一个可选参数以传递给单个 url() 对象的 View 。我的问题是,是否可以指定相同的可选参数并将其应用于 patterns() 对象内的每个 url()。

请您参考如下方法:

我不这么认为,但你可以简单地使用一个变量:

d = { 'foo' : very_long_value } 
 
urlpatterns = patterns('', 
    url('^aaaa/$', 'aaa', d), 
    url('^bbbb/$', 'bbb', d), 
    url('^cccc/$', 'ccc', d), 
) 

如果您希望能够动态地向某些 url 添加值,您可以执行以下操作:

def add_dict(d, **kw): 
    x = d.copy() 
    x.update(kw) 
    return x 
 
d = { 'foo' : very_long_argument } 
 
urlpatterns = patterns('', 
    url('^aaaa/$', 'aaa', d), 
    url('^bbbb/$', 'bbb', d), 
    url('^cccc/$', 'ccc', add_dict(d, bar = 'xxx')), 
) 

或者您也可以编写自己的 url 包装器:

def my_url(regex, view, kwargs=None, name=None, prefix=''): 
    if kwargs is None: 
        kwargs = {} 
    kwargs.update(foo = very_long_argument) 
    return url(regex, view, kwargs, name, prefix) 
 
urlpatterns = patterns('', 
    my_url('^aaaa/$', 'aaa'), 
    my_url('^bbbb/$', 'bbb'), 
    my_url('^cccc/$', 'ccc' { 'bar' : 'xxx'), 
)