2017-10-01 1 views
-2

Je souhaite empêcher un utilisateur de voir certains liens sur ma barre de navigation si l'utilisateur n'est pas connecté.Comment empêcher les utilisateurs anonymes d'accéder à certaines parties de mon site Web?

J'utilise l'instruction if dans mon modèle pour cela. Lorsque je suis connecté, il montre le bon ensemble de liens, mais quand je me suis déconnecté, il ne le fait pas.

enter image description here

Il doit montrer l'ul avec le signe des liens. Qu'est-ce que je fais mal?

Ceci est mon code:

<html> 
    <head> 
      <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous"> 


      {% block head %} 
      {% endblock %} 

    </head> 

    <body> 
    <style> 

    ul, li { 

     margin: 0px 14px; 
    } 

    </style> 
     <nav class = "navbar fixed-top navbar-light bg-light justify-content-between flex-nowrap flex-row"> 


     <div class = " container"> 


     <a class = "navbar-brand float-left" href = "{% url 'Identities:nest'%}">nest</a> 


    {% if user.is_authenticated %} 

      <ul class = "nav navbar-nav flex-row float-left "> 

         <li class = "nav-item "><a class = "nav-link" href = "{% url 'Identities:logout'%}">Sign Out</a></li> 
         <li class = "nav-item"><a class = "nav-link" href = "{% url 'Identities:view_profile' %}">view Identity </a></li> 
         <li class = "nav-item"><a class = "nav-link" href = "{% url 'Identities:edit_profile' %}">edit Identity </a></li> 
      </ul> 

{% else %} 

      <ul class = "nav navbar-nav flex-row float-left "> 

      <li class = "nav-item "><a class="nav-link" href = "{% url 'Identities:login'%}">Sign In</a></li> 

      </ul> 


    {% endif %} 
     </div> 

     </nav> 

    {% block body %} 

      {% endblock %} 

    </body> 

</html> 
+1

Lire https://stackoverflow.com/questions/39905210/django-user-permission-inside -template # 39906318 et suivez les liens pour plus d'explications – dahrens

+0

Copie possible de [autorisation utilisateur Django dans le modèle] (https://stackoverflow.com/questions/39905210/django-user-permission-inside-template) – BrettJ

Répondre

1

cet exemple montrera journal en pour les utilisateurs anonymes et pour déconnexion utilisateurs connectés:

<nav> 
<!--your code-->... 
<div class="nav navbar-right"> 
{% if user.is_authenticated %} <!--check if the user is logged in--> 
<a href="log-in-url">Log out</a> 
{% else %} <!--if not logged in (Anonymous user)--> 
    <a href="log-in-url">Log in</a> 
{% endif %} 
</div> 
</nav> 
+0

qudah Je ne suis pas sûr que cela permettra l'accès au lien de signature de la barre de navigation. Pourriez-vous expliquer plus loin? Je souhaite afficher certains liens de navigation uniquement lorsque l'utilisateur est connecté et certains liens lorsque l'utilisateur est déconnecté. Je pense que la barre de navigation est le problème. Je peux me tromper –

+0

s'il vous plaît lire la réponse attentivement car il fait ce que vous voulez:) –

+0

Bonjour, je me suis rendu compte que l'erreur était dans mon fichier urls.py. Vous avez raison, la réponse fait ce que je veux. –

0

Modifier votre instruction if à ce qui suit:

{% if request.user.is_authenticated %} 

Cela devrait vous fixer.

+0

Je l'ajoute mais il ne montre toujours pas le lien de connexion dans la barre de navigation. –