2013-09-06 6 views
0

У меня есть приложение django, использующее аутентификацию, где пользователь может просматривать профили друг друга.Вызов информации из запроса внутри шаблона django

В моем views.py

def display(request, edit=False, pk=None): 
    if not pk: 
     pk = request.user.profile.pk 

    profile = Profile.objects.get(pk=pk) 
    d = get_user_info(profile) # returns a dictionary of some info from a user's profile 

    if edit and request.user == profile.user: 
     return render(request, 'edit_profile.html', d) 
    else: 
     return render(request, 'profile.html', d) 

Внутри моего шаблона я хотел бы дать пользователю возможность щелкнуть ссылку, позволяющие им редактировать информацию, если они просматривают свой собственный профиль.

{% if request.user == profile.user %} 
    <a href="{% url "edit_profile" %}">edit</a> 
{% endif %} 

У меня есть два вопроса об этом.
Во-первых: Я думал, используя render() позволило мне получить доступ к request внутри шаблона. Однако это не работает. Я делаю это неправильно? Или мне нужно явно передать render со словарем?

d['request']=request  
return render(request, 'profile.html', d) 

Второй: Это нормально? Или я должен делать это по-другому?

+0

Да, вы можете использовать словарь или запрос на обработку контекста, но с этим последним вам нужно добавить дополнительные настройки в settings.py – drabo2005

+0

показать часть модели, она будет более полезной – drabo2005

ответ

3

Django имеет request context processor, который добавляет request объект в контексте шаблона. Это не добавлено по умолчанию, поэтому вам нужно включить его в настройках TEMPLATE_CONTEXT_PROCESSORS.

Однако django добавляет текущий request.user как переменную контекста user, поэтому вы можете использовать это, если этого достаточно.

+0

Да, я видел это в несколько других сообщений, но в 'system.py нет' TEMPLATE_CONTEXT_PROCESSORS'. Я просто добавляю его? – Ben

+0

см. Это http://stackoverflow.com/questions/15446558/where-is-template-context-processor-in-django-1-5/15446953#15446953 – Rohan

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