Вопрос

some_view?param1=10&param2=20

def some_view(request, param1, param2):

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

Это было полезно?

Решение

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

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.В противном случае вам пришлось бы придумать какое-то странное регулярное выражение, чтобы попытаться сделать то, что вы хотите.

Согласен с Паоло...вещи после "?" получают параметры и, вероятно, должны рассматриваться как таковые.Тем не менее, если вы действительно хотите сохранить определение 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 для извлечения аргументов?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top