如何使用基于类的 View 为 url 参数创建默认值?在例如 TemplateView 上
例如:
url(r'^(?P<num>\d+)|/$', MyView.as_view())
如果 num 没有在 url 中指定,我想设置一个默认值 '4'
最佳答案
如果您指定包含以下名称的正则表达式:
url(r'^(?P<num>\d+)|/$', MyView.as_view())
那么 num
将始终作为关键字参数传递给您的 View 函数。如果正则表达式匹配但没有 num
匹配,则 num
将作为 None 传递给您的 View 。
给定以下 View 函数:
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
关于python - 基于类的 View 中的可选 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429500/