2009-04-18 1 views

ответ

3

Вы всегда можете написать декоратор. Например. что-то вроде (непроверенные):

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

@map_params 
def some_view(request, param1, param2): 
    ... 
+0

Ницца. Думаю, это сработает. Очень чисто. :) +1 –

1

Я не уверен, что это возможно, чтобы получить его, чтобы передать их в качестве аргументов к функции зрения, но почему вы не можете получить доступ к GET переменных из request.GET? Учитывая этот URL, Django будет иметь request.GET['param1'] be 10 и request.GET['param2'] будет 20. В противном случае вам придется придумывать какое-то странное регулярное выражение, чтобы попытаться сделать то, что вы хотите.

1

Я согласен с Паоло ... после «?» являются параметрами 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. Просто любопытно, почему ты хочешь этого?

+0

Мне нужна эта причина - его использование меньше кода, я могу возможно сделать декоратора для этого –

1

Вместо того, чтобы бороться с Django, почему бы просто не запросить some_view/10/20, а затем настроить urls.py для извлечения аргументов?

+0

+1: Используйте URL-адресов - все работает лучше. –

+0

Я не сражаюсь, это моя служба json, параметры jquery для отправки, многие разные и многие не требуются. Вот почему его проще. –

 Смежные вопросы

  • Нет связанных вопросов^_^