2017-02-22 38 views
1

Я создал несколько отдельных видов и соответствующих им шаблонов с django. Все они расширяют шаблон base.html, и теперь я добавил несколько кнопок в заголовок base.html, чтобы я мог перемещаться между разными представлениями.Django пользователь, как будто не вошел в систему

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

{% if request.user.is_authenticated %} 
    <p class="top-menu" style="font-size:17px">Logged in as: {{ request.user.name }} (<a href="{% url 'logout' %}" class="top-menu">Logout</a>)</p> 
{% else %} 
    <a href="{% url 'registration' %}" class="top-menu">Register</a>/<a href="{% url 'login' %}" class="top-menu">Login</a> 
{% endif %} 

Теперь моя проблема в том, что для всех страниц это работает, как и ожидалось, за исключением одного. Это страница с формой (набором) на ней. GET выглядит следующим образом:

if request.method == 'GET': 
     form_submission = SubmitForm() 
     formset_authors = formset_factory(SubmitAuthorForm) 

    c = { 'form_submission': form_submission, 'formset_authors': formset_authors } 
    c.update(csrf(request)) 

    return render_to_response('journal_submit.html' ,c , RequestContext(request)) 

странно то, что когда я добавить login_required декоратора это позволит мне пройти. Поэтому он знает, что я вошел в систему. Я предполагаю, что пользователь каким-то образом не передается правильно. Это верно? и если да, то как я могу это сделать (безопасно)?

+0

, если вы используете Джанго 'django.contrib.auth.context_processors', вы можете оставить заявку' '' request.user' out https://docs.djangoproject.com/en/1.10/ref/templates/api/#built-in-template-context-processors – Nrzonline

ответ

2

render_to_response осуждался, и я полагаю, ваши вопросы с помощью RequestContext, вместо этого вы можете просто использовать render

from django.shortcuts import render 
return render(request, 'journal_submit.html', c) 
+1

Все может быть так просто, когда вы знаете ответ , Благодаря! – DisneylandSC

+0

@DisneylandSC - Не беспокойтесь, вам не нужно обновлять контекст с помощью csrf – Sayse