Авто GET для аргумента зрения - PullRequest
0 голосов
/ 18 апреля 2009
some_view?param1=10&param2=20

def some_view(request, param1, param2):

Возможно ли это в Джанго?

Ответы [ 4 ]

3 голосов
/ 18 апреля 2009

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

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

@map_params
def some_view(request, param1, param2):
    ...
1 голос
/ 18 апреля 2009

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

1 голос
/ 18 апреля 2009

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

1 голос
/ 18 апреля 2009

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

...