0
some_view?param1=10&param2=20

def some_view(request, param1, param2):

在 Django 中这可能吗?

4

4 回答 4

3

你总是可以写一个装饰器。例如。类似(未经测试):

def map_params(func):
    def decorated(request):
        return func(request, **request.GET)
    return decorated

@map_params
def some_view(request, param1, param2):
    ...
于 2009-04-18T12:47:22.400 回答
1

我不确定是否可以将它们作为参数传递给视图函数,但为什么不能GET从 访问变量request.GET?给定那个 URL,Django 应该request.GET['param1']是 10 和request.GET['param2']20。否则,你必须想出一些奇怪的正则表达式来尝试做你想做的事。

于 2009-04-18T07:54:09.890 回答
1

我同意 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 参数。只是好奇,你为什么要那个?

于 2009-04-18T08:27:15.913 回答
1

与其对抗 Django,不如直接请求 some_view/10/20 然后设置 urls.py 来提取参数?

于 2009-04-18T12:26:15.337 回答