2017-02-22 6 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

を使用することができますRequestContextを使用して、あなたの問題があると仮定します'の' request.user'のうちhttps://docs.djangoproject.com/ja/1.10/ref/templates/api/#built-in-template-context-processors – Nrzonline

答えて

2

render_to_responseは廃止されました、そして私はあなたがDjangoの `django.contrib.auth.context_processors`を使用している場合、あなたは`リクエストを残すことができ、代わりにあなただけのrender

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

あなたは答えを知っていることが時々とてもシンプルになることがあります。ありがとう! – DisneylandSC

+0

@DisneylandSC - 心配しないで、csrfでコンテキストを更新する必要はありません – Sayse

関連する問題