2013-03-15 2 views
4

Я пытаюсь что-то вроде этого:request.path в шаблоне Джанго

{% if request.path == 'contact' %} 
    <p>You are in Contact</p> 
{% endif %} 

{% if request.path == 'shop' %} 
    <p>You are in Shop</p> 
{% endif %} 

Почему не работает?

+0

Что находится в настройках TEMPLATE_CONTEXT_PROCESSORS? – Brandon

+0

@Brandon У меня нет этого conf в моих settings.py. Я использую django 1.4.5. Я думаю, что у меня есть настройки по умолчанию. – Emanuel

+1

Попробуйте вывести '{{request.path}}'. – sneawo

ответ

13

процессорами шаблон по умолчанию Django являются

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" 
) 

(см documentation)

Вы должны django.core.context_processors.request использовать request в шаблонах, поэтому добавьте его в этот список в settings.py. Если у вас нет этой переменной, установите ее.

1

Try:

{% if request.path == '/contact/' %} 
    <p>You are in Contact</p> 
{% elif request.path == '/shop/' %} 
    <p>You are in Shop</p> 
{% endif %} 
+0

Спасибо, но все же он не работает – Emanuel

+0

request.path дает вам весь путь, чтобы он был/что-то/someting/contact /, если путь выглядит так. то есть. –

+0

Точно. Вы должны проверить весь путь, я просто основывал свой пример на том, что было предоставлено :) – Brandon

0

прежде, чем 1,8 settings.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'other.required.processors.names', 
    'django.core.context_processors.request', 
) 

views.py (используя className.as_view)

from django.template import * 

class className(TemplateView): 
    template_name = "name.html" 

views.py (нормальное использование)

from django.shortcuts import render_to_response 

def name(request): 
    return render_to_response('name.html'{},context_instance=RequestContext(request)) 
Смежные вопросы