Maison >développement back-end >Tutoriel Python >Implémentation de l'authentification des utilisateurs dans Django
Pour protéger les données de la vue contre l'accès par des utilisateurs anonymes, vous devez utiliser un système d'authentification. Django fournit des fonctions d'implémentation d'authentification intégrées (veuillez vous référer à la documentation).
Qu'est-ce que l'authentification ? L'authentification est le processus de comparaison des données d'identité des utilisateurs. L'authentification s'effectue en deux étapes :
Ouvrez votre projet Django et suivez ces étapes :
Créer une fonction views.py
dans sign_in
:
<code class="language-python">from django.contrib.auth import authenticate, login from django.shortcuts import redirect def sign_in(request): username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('core:profile') # 假设您已定义了名为 'profile' 的 URL 名称 else: return redirect('core:sign-in') # 假设您已定义了名为 'sign-in' 的 URL 名称</code>
Créer login.html
le fichier dans le répertoire "templates" :
<code class="language-html"><form method="post"> {% csrf_token %} <table> <tr> <td>{{ form.username.label_tag }}</td> <td>{{ form.username }}</td> </tr> <tr> <td>{{ form.password.label_tag }}</td> <td>{{ form.password }}</td> </tr> </table> <button type="submit">登录</button> </form></code>
Vous devez maintenant créer l'URL pour l'authentification dans urls.py
:
<code class="language-python">from django.urls import path from .views import sign_in app_name = 'core' urlpatterns = [ path('sign-in/', sign_in, name='sign-in'), ]</code>
Configurer le modèle d'URL dans settings.py
:
<code class="language-python">LOGIN_REDIRECT_URL = '/accounts/profile/' LOGIN_URL = '/accounts/login/' LOGOUT_REDIRECT_URL = '/'</code>
Utilisez la méthode is_authenticated
lorsque vous devez limiter certaines données (plutôt que la vue entière). Vérifiez par programme si l'utilisateur est authentifié dans une vue :
<code class="language-python">if request.user.is_authenticated: # 对已认证用户执行操作 ... else: # 对匿名用户执行操作 ...</code>
Vérifiez dans le modèle si l'utilisateur est authentifié :
<code class="language-html">{% if user.is_authenticated %} <p>您的帐户无权访问此页面。要继续,请使用具有访问权限的帐户登录。</p> {% else %} <p>请登录以查看此页面。</p> {% endif %}</code>
Vous pouvez également décorer la vue à l'aide du login_required
décorateur :
<code class="language-python">from django.contrib.auth.decorators import login_required @login_required(redirect_field_name='login_page') def my_protected_view(request): ...</code>
Cette réponse révisée améliore la clarté, ajoute la gestion des erreurs (en utilisant get
au lieu de []
dans le views.py
) et fournit plus de contexte pour les extraits de code. Elle utilise également des noms de variables et des commentaires plus descriptifs. remplacez les URL d'espace réservé ('core:profile'
, 'core:sign-in'
, /accounts/profile/
, /accounts/login/
) par vos noms et chemins d'URL réels.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!