簡體   English   中英

Django 用戶無法登錄

[英]Django User cannot login

我做了一個簡單的注冊和登錄腳本,注冊腳本工作並將用戶信息發送到數據庫,但登錄並沒有登錄用戶。

這是views.py中的登錄函數:

from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth.forms import UserCreationForm
from django.contrib import messages
from django.contrib.auth import authenticate, login, logout
from .forms import LoguserForm
# Create your views here.

def loginpage(request):

    if request.method == 'POST':
        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('home')

    context = {}
    return render(request, 'accounts/login.html', context)

這是 login.html 文件:

<body class="container">

    <div class="loginbox">
        <form id="login" class="input-group">
            {% load static %} <img src="{% static 'accounts/images/logo.png' %}" id="loginlogo">
            {% csrf_token %}
            <input type="text" class="inputfield" name="username" placeholder="Username">
            <input type="password" class="inputfield" name="password" placeholder="Password">
            <input type="submit" class="submitbtn" value="Login"></input>
            {% for message in messages %}
            <p>{{message}}</p>
            {% endfor %}
            <p1 class="registerp">New here? <a href="/register">Register</a></p1>
        </form>
    </div>

這是主頁代碼:

def home(request):
    return HttpResponse('Home Page')

當我嘗試登錄而不是將我重定向到主頁時,URL 更改為:

http://127.0.0.1:8000/?csrfmiddlewaretoken=F63yG1ZNQTr4e6tRvjvj5TraSLeDDxAGCm1S89k4yuq21DyPgS4AlnfxA2KtnrA4&username=Tester&password=888tyuuyt

您需要在表單標簽中添加操作方法為 POST 和 url,如下所示。

<form action="your-login-endpoint/" id="login" class="input-group" method="post">
{% csrf_token %}
...
</form>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM