2016-06-26 8 views
0

にログインしていてもfalseを返すrequest.user.is_authenticated何も返さない保持し、それは私がログインしたことのないような演技を続ける。私はで...はrequest.user.is_authenticated、HTMLテンプレートでは

ログインしました

:これは、ログインした後、それがこのアカウントViews.py

def log_in(request): 
    if request.method == 'POST': 
     form = LoginForm(request.POST) 
     if form.is_valid(): 
      user = form.cleaned_data['username'] 
      pword = form.cleaned_data['password'] 
      user = authenticate(username = user, password = pword) 
      if user is not None: 
       # return render(, 'home.html') 
       login(request, user) 
       return HttpResponseRedirect('/home/') 
      else: 
       return render(request, 'login.html', { 'logform': form, 'error': True}) 
    else: 
     if request.user.is_authenticated(): 
      return HttpResponseRedirect('/home/') 
     else: 
      form = LoginForm() 
    return render(request, 'login.html', { 'logform':form,}) 

これはhome.htmlドキュメントです

@login_required 
def home(request): 
    print("USER?: " + str(request.user)) 
    print(request.user.is_authenticated) 
    if not request.user.is_authenticated(): 
     return render_to_response('index.html') 
    return render_to_response('home.html', request) 

をhome.htmlに戻り、ホームViews.pyです

{{ user.username }} 
    {% if user.is_authenticated %} 
     <p>Welcome, {{ user.username }}. Thanks for logging in.</p> 
    {% else %} 
     <p>Welcome, new user. Please log in.</p> 
    {% endif %} 

if/elseステートメントを出すと何も表示されません。しかし、ログイン機能では、user.is_authenticatedが印刷され、ログインしたユーザー名が表示されます。また、ログインしているかログインしていない場合、HTML文書には他に移動します。

ヘルプは素晴らしいでしょう!

+0

'request.user.is_authenticated()'を実行する前に 'request.user'を表示してください。それが 'AnonymousUser'かどうか確認してください。あなたはどんなクッキーを使っていますか? – scriptmonster

+0

はい私はクッキーを使用しています。ログインする前に、 'AnonymousUser'を表示します。ログイン後、プリントアウトされます: 'JohnJoe'。 – DjangoHelpUser

+0

私はそれがクッキーに関するものだと信じています。もしあなたがクッキーを設定していて、 '['、 ']'のような特別な文字が含まれていると、djangoはいくつかのクッキーの読み込みをクラッシュさせます。私はbase64にそのようなクッキーをエンコードするよう助言します。 – scriptmonster

答えて

1

テンプレートをレンダリングするためにRequestContextを使用していないため、コンテキストプロセッサは実行されず、userはコンテキストに追加されません。

log_inビューの例では、render_to_response(...)ではなくrender(request, ...)を使用する必要があります。ショートカットをレンダリングすると、あなたのためのRequestContextが作成されます。

+0

私のaccount_viewのlog_inでは、私はrender_responseを使用していませんか? – DjangoHelpUser

+0

申し訳ありませんが、私はその質問を理解していません。 –

+0

あなたは、私のlog_inでは、render_response(...)ではなくrender(request ...)を使用していて、render_response(...)は使用していないと言っています。あなたがコードや修正を表示するのが好きなら大丈夫ですか? – DjangoHelpUser

関連する問題