some_view?param1=10¶m2=20
def some_view(request, param1, param2):
在 Django 中这可能吗?
some_view?param1=10¶m2=20
def some_view(request, param1, param2):
在 Django 中这可能吗?
你总是可以写一个装饰器。例如。类似(未经测试):
def map_params(func):
def decorated(request):
return func(request, **request.GET)
return decorated
@map_params
def some_view(request, param1, param2):
...
我不确定是否可以将它们作为参数传递给视图函数,但为什么不能GET
从 访问变量request.GET
?给定那个 URL,Django 应该request.GET['param1']
是 10 和request.GET['param2']
20。否则,你必须想出一些奇怪的正则表达式来尝试做你想做的事。
我同意 Paolo 的观点……“?”之后的内容 是 GET 参数,应该这样对待。也就是说,如果您真的想保留 some_view() 的定义,如您在问题中所述,您可以执行以下操作:
from django.http import Http404
def some_view_proxy(request):
if 'param1' in request.GET and 'param2' in request.GET:
return some_view(request, request.GET['param1'],
request.GET['param2'])
raise Http404
或者您可以像这样定义 some_view() 并使用 GET 参数。只是好奇,你为什么要那个?
与其对抗 Django,不如直接请求 some_view/10/20 然后设置 urls.py 来提取参数?