Отображение значений строки запроса в шаблонах django


Я хотел распечатать некоторые сообщения об успехе из метода get обратно на страницу индекса (home.html), то есть страница шаблона с помощью строки запроса. Я перенаправил на страницу индекса, используя

    return HttpResponseRedirect("/mysite/q="+successfailure)

Теперь я хотел распечатать строку success вместе с другим содержимым в индексном файле (или файле шаблона / home.HTML-файл).

Я искал решение и нашел, что " django.ядро.context_processors.контекст запроса " следует добавить в настройки. Но я ничего не нашел. место, чтобы добавить его. В настоящее время я использую python 2.7 и django 1.4.3.

Я также пытался использовать

    render_to_response("home.html",{'q':successfailure})

Однако результат печатается на текущей странице (addContent.html-чего я не хочу), но я хочу отправить url в ' / mysite/' и распечатать результат там.

Пожалуйста, предложите подходящее решение. Заранее спасибо.

2 3

2 ответа:

Это контекстные процессоры по умолчанию: https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
    #add this
    "django.core.context_processors.request" 
)

Если его нет в ваших настройках, то вы его еще не переопределили. сделать это сейчас.

Затем в вашем шаблоне, что-то вроде этого:

{% if request.GET.q %}<div>{{ request.GET.q }}</div>{% endif %}

Кроме того, я заметил, что в url-адресе ссылки вы не используете оператор querystring ? должен быть:

return HttpResponseRedirect("/mysite/?q="+successfailure)

Я не уверен, что понимаю вопрос, но вы можете получить доступ к строке запроса в вашем представлении с помощью request.GET.

Таким образом, вы можете настроить вид, который отображает дом.html путем добавления переменной successfailure в контекст. Что-то вроде -

def home_view(request):
    #....
    successfailure = request.GET
    return render(request, 'home.html', {'succsessfailure': successfailure.iteritems()})

Затем повторите через переменные в вашем шаблоне

{% for key, value in successfailure %}
    <p>{{ key }} {{ value }}</p>
{% endfor %}

Если в строке запроса есть определенный ключ, вы можете получить значение с помощью request.GET['your_key'] и отбросить вызов iteritems() (вместе с итерацией в шаблоне).