自动获取到的视图参数
-
11-09-2019 - |
题
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。否则,你就必须拿出一些很怪的正则表达式的尝试和你想要做什么。
我同意保罗......在之后的东西“?”是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 PARAMS。只是好奇,为什么你要吗?
相反战斗的Django的,为什么不请求some_view 10/20,然后设置/向上urls.py提取参数?
不隶属于 StackOverflow