2016-03-18 6 views
0

問題が次のように続きます@login_requiredを渡しても一部のページにユーザーオブジェクトが存在しません

私はいくつかのページでアプリを持っています。一番上には、標準のログイン/ログアウトとログインするためのフォームがあるメニューがあります。このメニューは、私のbase.htmlであるケースでは、あなたに正しい選択を表示することが想定されますがすでにログイン/または、まだログインしていません。アプリで すべてのページが@login_required

base.htmlで保護されています

<ul class ="nav navbar-nav navbar-right"> 
    {% if request.user.is_authenticated %} 
     <li ><a href="{% url 'auth_logout' %}" %> {{user}} Logout </a></li> 
    {% else %} 
    <li ><a href="{% url 'registration_register' %}" %> Register </a></li> 
     {% endif %} 
    <li><div class="form"> 
     {% if not request.user.is_authenticated and not "/accounts/login" in request.get_full_path %} 

      <form class='navbar-form navbar-right' method='POST' action='{% url "auth_login" %}'>{% csrf_token %} 
       <div class='form-group'> 
        <input type='text' class='form-control' name='username' placeholder='Username' /> 
       </div> 
       <div class='form-group'> 
        <input type='password' class='form-control' name='password' placeholder='Password' /> 
       </div> 
       <button type='submit' class='btn btn-default'>Login</button> 
      </form> 
     {% endif %} 
    </li> 
</ul> 

主に、私はリストページを呼び出すと例外がありますが、完璧に機能します。 そして、この場合には、それは@login_required検証が、ユーザーオブジェクトを渡すんが、テンプレートに表示されていない - このような理由のために、それは間違ったメニューオプション

view.py

@login_required 
    def contact_list(request): 
     contact_list = ContactFilter(request.GET, queryset=Contacts.objects.all()) 
     #return render_to_response('my_app/template.html', {'filter': filter}) 
     #company_list = Company.objects.all() 
     paginator = Paginator(contact_list, 25) # Show 25 contacts per page 

     page = request.GET.get('page') 
     try: 
      contact = paginator.page(page) 
     except PageNotAnInteger: 
      # If page is not an integer, deliver first page. 
      contact = paginator.page(1) 
     except EmptyPage: 
      # If page is out of range (e.g. 9999), deliver last page of results. 
      contact = paginator.page(paginator.num_pages) 

     #return render(request, 'customer/company_list.html', {'company': company}) 
     return render_to_response('customer/contact_list.html', {'contact': contact_list,'page_contact':contact }) 

Iドンを表示します私はテンプレートコードを公開していないので、contact_listテンプレートはそれと関係がないと思う。

何か理由がありますか?

ありがとうございます

答えて

4

render_to_responseの代わりにrenderを使用してください。リクエストオブジェクトをテンプレートに送信していないため、 'request.user.is_authenticated'は機能しません。

+0

ありがとう、完璧に機能しました! –