您不必将 if_random 作为 url 参数传递。
def random_person(request):
return HttpResponseRedirect(
reverse('home.views.film_chart_view') + \
"?q=" + get_person.short + \
"&is_random=1"
)
def film_chart_view(request):
is_random = 'is_random 'in request.GET
但如果你更喜欢 url 参数,解决方案就稍微复杂一些。
传递给视图函数的参数来自 url patterns,您需要首先设置它们。
因为 is_random 参数是可选的,所以我建议您为 film_chart_view 编写 2 个单独的模式。(实际上,您可以将这 2 个模式与更复杂的正则表达式组合成一个,但可读性很重要。)
网址配置:
url(r'^film_chart_view/$', 'home.views.film_chart_view', name ='film_chart_view'),
url(r'^film_chart_view/(?P<is_random>.*)/$', 'home.views.film_chart_view', name ='film_chart_view_random'),
url(r'^random/$', 'home.views.random_person'),
def random_person(request):
return HttpResponseRedirect(
reverse('home.views.film_chart_view', kwargs={'is_random': '1'}) + \
"?q=" + get_person.short
)
视图参数(请求除外)始终是字符串,您需要在代码中将其转换为 int/bool/...。
def film_chart_view(request, is_random=None):
if is_random:
...