2013-02-17 3 views
3

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

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

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

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

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

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

однако, результат выводится на текущей странице (addContent.html-, которые я не хочу), но я хочу, чтобы отправить URL в «/ MySite /» и напечатайте результат там.

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

ответ

12

это контекст по умолчанию процессоров: 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 ссылки не используется оператор строки запроса ? должно быть:

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

«django.core.context_processors.request» теперь «django.template.context_processors.request» – Benos

1

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

Таким образом, вы можете настроить представление, которое отображает home.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() (наряду с итерация в шаблоне).

+0

@ user2081099 вы можете пометить мой ответ, как принятый ответ, щелкнув большой серый тик в левом верхнем углу моего ответа (лично я предпочитаю решение Фрэнсиса) –

+0

Наверх предложение @AidanEwen, мне нужно было запустить окно модального окна с бутстрапом при ошибке form.is_valid(), и это техника работала. . – campervancoder

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