2015-05-30 5 views
0

Кажется, что нет возможности захватить всю строку запроса в Django, не так ли? У меня есть только решения для захвата отдельных параметров.Добавить или заменить параметр в строке запроса

Так как я могу проверить, существует ли строка запроса

Я хочу, чтобы проверить, существует ли сама строка запроса (любые параметры после «?»), Если он затем либо заменить или добавить параметры «param1» к нему. Как я могу это сделать? Например:

localhost:8000 -> localhost:8000/?param1=a 
    localhost:8000/?param1=1 -> localhost:8000/?param1=bb 
    localhost:8000/?param1=1&param2=fdfd -> localhost:8000/?param1=333&param2=fdfd 

    localhost:8000/?param2=fdfd -> localhost:8000/?param1=1&param2=fdfd 

Как я могу это сделать?

ответ

2

request.GET - это строка запроса, и она соответствует интерфейсу словаря. Как и во всех контейнерах Python, пустой dict является False в булевом контексте. Таким образом, вы можете проверить, пусто ли он, просто делая if request.GET.

Однако, в ваших примерах, похоже, вы всегда меняете param1 в любом случае, нет необходимости сначала его проверять: просто установите значение: request.GET['param1'] = 'whatever'.

+0

'request.GET' неизменно по умолчанию. Вы можете выполнить 'request.GET = request.GET.copy()', чтобы обойти это. – knbk

+0

Как преобразовать request.GET в строку запроса? –

+0

Посмотрите здесь: https://docs.djangoproject.com/ru/1.8/ref/request-response/#django.http.HttpRequest.META. Есть ключ QUERY_STRING, который должен возвращать все после? –

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