Добавить строку запроса для просмотра функции рендеринга Django

#python #django #django-views

#python #django #django-просмотры

Вопрос:

На мой взгляд, я получил querystring :

 def my_view(request):
    query_string  = request.GET
  

Затем я выполняю некоторые действия в этом представлении. Наконец, я хочу добавить querystring к URL-адресу просмотра при полном отображении страницы:

 return render(request, 'my_template.html', context=context) # Want to add querystring here!
  

Вкратце, я хочу добавить querystring для просмотра функции рендеринга или что-то в этом роде. Как я могу это сделать?


Процесс рендеринга:

Я думаю, что я должен объявить свою цель. Я объясню весь процесс рендеринга и определю, что я имею в виду. Смотрите:

  1. Пользователь нажимает на ссылку, которая переходит к этому представлению (отправить запрос). Предположим, что это наша ссылка:

     site.com/my/page/?q1=value_1amp;q2=value_2
      
  2. Просмотр вызова функции:

     # urls.py
    path('my/page/', my_view)
    
    # views.py
    def my_view(request):
        query_string  = request.GET 
      
  3. Шаблон рендеринга с request , template и context :

     return render(request, 'my_template.html', context=context)
      
  4. После завершения html и всех статических файлов у нас есть HTML-страница, которая имеет URL и html .

Я хочу добавить свой основной querystring в URL процесса 4. Как я могу это сделать?

Комментарии:

1. Строка запроса уже находится в конце URL-адреса при рендеринге этого конкретного представления. Обратите внимание, что имя шаблона не имеет ничего общего с URL. Каждое представление может отображать ноль, один или несколько шаблонов, и каждый шаблон может отображаться в нулевом, одном или нескольких представлениях.

2. Привет, Уиллем. Пожалуйста, посмотрите мою новую правку @WillemVanOnsem

3. но обычно URL останется site.com/my/page/?q1=value_1amp;q2=value_2 , а не site.com/my_template.html , поскольку шаблон не влияет на пути.

4. Я знаю, что шаблон не влияет на путь! Я имею в виду: когда мое представление отображалось, я получил это: site.com/my/page/ , и я хочу получить это: site.com/my/page/?q1=value_1amp;q2=value_2 @WillemVanOnsem

5. но откуда ?q1=... берется? request.GET определяет строку запроса в данный момент . Итак, если вы посещаете его с помощью site.com/my/page , тогда нет querysetring и request.GET , таким образом, будет пустым.