Подтвердить что ты не робот

Добавить строку запроса в URL в django

У меня есть функция, которая вызывает другую функцию и передает строку запроса в конец URL-адреса.

Как бы я выполнил следующее -

if my_videos:
    return render(request, template, {kwargs}) + "?filter=others&sort=newest"

Примечание. Мне все равно, использую ли я рендер или нет, его использование - просто указать, что я пытаюсь выполнить. Спасибо.

4b9b3361

Ответ 1

Передайте строку запроса в шаблоне:

<a href="{% url my_videos %}?filter=others&sort=newest">My Videos</a>

Ответ 2

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect


if my_videos:
    return HttpResponseRedirect( reverse('my_videos') + "?filter=others&sort=newest")

Ответ 3

Я не уверен, было ли это возможным во время запроса этого вопроса, но если у вас есть данные для построения строки запроса в вашем представлении и передачи ее в качестве контекста, вы можете использовать класс QueryString. После его создания вы можете просто вызвать его urlencode для создания строки.

Пример:

from django.http import QueryDict

def my_view(request, ...):
    ...
    q = QueryDict(mutable=True)
    q['filter'] = 'other'
    q['sort'] = 'newest'
    q.setlist('values', [1, 2, 'c'])
    query_string = q.urlencode()
    ...

query_string теперь будет иметь значение u'filter=other&sort=newest&values=1&values=2&values=c'

Ответ 5

В шаблонах вы можете сделать что-то вроде следующего:

{% url 'url_name' user.id %}
{% url 'url_name'%}?param=value
{% "/app/view/user_id" %}

В первом случае запрос будет выглядеть в форме http://localhost.loc/app/view/user_id "Во втором случае строка запроса должна быть в форме http://localhost.loc/app/view?param=value" В третьем случае это просто, но я рекомендую первый, который зависит от имени сопоставлений url, применяемых в urls.py

Применение этого в представлениях должно выполняться с помощью HttpResponseRedirect

    #using url_names
    # with standard querystring
    return HttpResponseRedirect( reverse('my_url') + "?param=value")
    #getting nicer querystrings
    return HttpResponseRedirect(reverse('my_url', args=[value]))
    # or using relative path
    return HttpResponseRedirect( '/relative_path' + "?param=value")

Подсказка: чтобы получить значение строки запроса из любого другого представления

s = request.GET.get('param','')

Ответ 6

Перенаправить URL-адрес, который вы хотите использовать HttpResponseRedirect

from django.http import HttpResponseRedirect

[...]

if my_videos:
    return HttpResponseRedirect(request.path + "?filter=others&sort=newest")