Python 基于类的视图中的可选url参数
如何使用基于类的视图为url参数创建默认值?例如,在TemplateView上 例如:Python 基于类的视图中的可选url参数,python,django,django-urls,django-class-based-views,Python,Django,Django Urls,Django Class Based Views,如何使用基于类的视图为url参数创建默认值?例如,在TemplateView上 例如: url(r'^(?P<num>\d+)|/$', MyView.as_view()) url(r'^(?P\d+)|/$,MyView.as_view() 如果url中未指定num,我想将默认值设置为“4”如果url中未指定num,Django将不会在urls.py中使用该行来显示页面。您可以像这样修改URL配置以实现此目的: url(r'^$', MyView.as_view()) url(
url(r'^(?P<num>\d+)|/$', MyView.as_view())
url(r'^(?P\d+)|/$,MyView.as_view()
如果url中未指定num,我想将默认值设置为“4”如果url中未指定
num
,Django将不会在urls.py
中使用该行来显示页面。您可以像这样修改URL配置以实现此目的:
url(r'^$', MyView.as_view())
url(r'^(?P<num>\d+)|/$', MyView.as_view())
它将URL中给定的值指定给
my\u URL
,否则默认为4。如果指定包含以下名称的正则表达式:
url(r'^(?P<num>\d+)|/$', MyView.as_view())
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
你能发布一些代码来说明你正在尝试做什么吗?我强烈建议避免覆盖
get
,除非这是绝对必要的。基于类的视图提供了一系列更适合于此的方法,具体取决于您正在子类化的实际视图
类以及您打算如何处理此参数。例如,如果需要它在DetailView
中实例化对象,请重写get_object
;如果您只想在模板中使用它,请使用get_context_data
;“等等,”贝里斯拉夫洛帕克同意了。这是一件让CBV有点尴尬的事情——您需要知道覆盖哪个方法。做事情的方法不止一种,如果没有适当的经验,就不清楚应该覆盖哪种方法。
# url: /
args ()
kwargs {'num': None}
# url: /45/
args ()
kwargs {'num': u'45'}
def get(self, request, *args, **kwargs):
num = kwargs.get('num', None)
if num is None:
num = 4