Um die Daten in der Ansicht vor dem Zugriff anonymer Benutzer zu schützen, müssen Sie ein Authentifizierungssystem verwenden. Django bietet integrierte Authentifizierungsimplementierungsfunktionen (siehe Dokumentation).
Was ist Authentifizierung? Bei der Authentifizierung handelt es sich um den Vergleich von Benutzeridentitätsdaten. Die Authentifizierung erfolgt in zwei Schritten:
Öffnen Sie Ihr Django-Projekt und befolgen Sie diese Schritte:
Funktion views.py
in sign_in
erstellen:
<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>
Erstellen Sie eine login.html
-Datei im Verzeichnis „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>
Jetzt müssen Sie die URL für die Authentifizierung in urls.py
erstellen:
<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>
URL-Muster konfigurieren in settings.py
:
<code class="language-python">LOGIN_REDIRECT_URL = '/accounts/profile/' LOGIN_URL = '/accounts/login/' LOGOUT_REDIRECT_URL = '/'</code>
Verwenden Sie die Methode is_authenticated
, wenn Sie bestimmte Daten (und nicht die gesamte Ansicht) einschränken müssen. Überprüfen Sie programmgesteuert, ob der Benutzer in einer Ansicht authentifiziert ist:
<code class="language-python">if request.user.is_authenticated: # 对已认证用户执行操作 ... else: # 对匿名用户执行操作 ...</code>
Überprüfen Sie in der Vorlage, ob der Benutzer authentifiziert ist:
<code class="language-html">{% if user.is_authenticated %} <p>您的帐户无权访问此页面。要继续,请使用具有访问权限的帐户登录。</p> {% else %} <p>请登录以查看此页面。</p> {% endif %}</code>
Außerdem können Sie die Ansicht mit dem login_required
Decorator dekorieren:
<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>
Diese überarbeitete Antwort verbessert die Klarheit, fügt Fehlerbehandlung hinzu (unter Verwendung von get
anstelle von []
) und bietet mehr Kontext für die Codeausschnitte. Außerdem werden aussagekräftigere Variablennamen und Kommentare verwendet Ersetzen Sie Platzhalter-URLs (views.py
, 'core:profile'
, 'core:sign-in'
, /accounts/profile/
) durch Ihre tatsächlichen URL-Namen und -Pfade./accounts/login/
Das obige ist der detaillierte Inhalt vonImplementierung der Benutzerauthentifizierung in Django. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!