如何使用基于类的视图为 url 参数创建默认值?例如 TemplateView
例如:
url(r'^(?P<num>\d+)|/$', MyView.as_view())
如果 num 未在 url 中指定,我想设置默认值 '4'
如何使用基于类的视图为 url 参数创建默认值?例如 TemplateView
例如:
url(r'^(?P<num>\d+)|/$', MyView.as_view())
如果 num 未在 url 中指定,我想设置默认值 '4'
如果您指定包含名称的正则表达式,例如:
url(r'^(?P<num>\d+)|/$', MyView.as_view())
然后num
将始终作为关键字参数传递给您的视图函数。如果正则表达式匹配但不num
匹配,则将num
作为 None 传递给您的视图。
给定以下视图函数:
def get(self, request, *args, **kwargs):
print 'args %s' % repr(args)
print 'kwargs %s' % repr(kwargs)
runserver 打印的输出如下:
# url: /
args ()
kwargs {'num': None}
# url: /45/
args ()
kwargs {'num': u'45'}
检测None
值并酌情分配默认值由您决定。
def get(self, request, *args, **kwargs):
num = kwargs.get('num', None)
if num is None:
num = 4
如果num
未在 URL 中指定,则 Django 不会使用该行urls.py
来显示页面。您可以像这样修改您的 URL 配置来实现这一点:
url(r'^$', MyView.as_view())
url(r'^(?P<num>\d+)|/$', MyView.as_view())
在 中MyView
,您可以通过以下方式获取参数:
def get(self, request, *args, **kwargs):
my_url = request.GET.get('url', 4)
它将 URL 中给定的值分配给my_url
或 4 作为默认值。