Я узнал, как аутентифицировать пользователей в Django несколько месяцев назад, но с тех пор я обновился, и у меня возникли некоторые проблемы, поэтому сегодня утром мне пришло в голову, что я, возможно, не делал это правильно с самого начала, поэтому я решил спросить.
В файле urls.py моего проекта у меня есть ^ accounts / login / $ и ^ accounts / logout / $, оба подключены к встроенным представлениям login () и logout () (в django.contrib.auth .views) и ^ account / profile / $ связан с написанным мною представлением, называемым «start_here», содержимое которого в основном таково:
def start_here(request):
if request.user:
user_obj = request.user
else:
user_obj = None
is_auth = False
if request.user.is_authenticated():
is_auth = True
return render_to_response("profile.html", {'auth': is_auth,'user': user_obj,})
Теперь «profile.html» расширяет мастер-шаблон, называемый master.html, внутри которого находится блок «navbar», содержимое которого должно измениться, если «auth» == True (фрагмент ниже)
{% block navbar %}
{% if auth %}
<a href="">Link A</a>
<a href="">Link B</a>
<a href="">Link C</a>
<a href="">Link D</a>
<a href="">Link E</a>
<a href="">Link F</a>
<a href="/accounts/logout/">Logout</a>
{% else %}
<a href="/accounts/login/">Login</a>
{% endif %}
{% endblock %}
Моя проблема в том, что когда я вхожу, и он перенаправляет на / account / profile, панель навигации не отображает ссылки A-F + Logout, она отображает только «логин». Это не сработает так, как я ожидаю, если я вручную не скопирую и не вставлю вышеупомянутый блок в profile.html. При вызове render_to_response () передается ли предоставленный мною контекст как родительскому шаблону, так и дочернему?
Полный исходный код для master и profile.html: http://dpaste.com/hold/128784/
Я не вижу ничего подозрительного в коде.