我是Django认证系统的新手,无法找到正确的调试方法.
我想创建一个函数来处理登录请求,我已经完成了必要的步骤.
-
在主项目url中创建了登录url路径.py文件.
path('members/', include('django.contrib.auth.urls')), path('members/', include('members.urls')),
-
在members应用程序中创建了登录url,以指向在视图中创建的函数.py
urlpatterns = [ path('login/', views.login_user, name='login'),]
-
定义了用户访问特定url时要执行的操作
def login_user(request): if request.method == 'POST': print('-'*100) username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) messages.success(request, ("You are now logged in")) return redirect('index') else: messages.success(request, ("Invalid credentials")) return redirect('login') return render(request, 'registration/Login.html')
-
我在templates文件夹中创建了一个登录页面.
{% extends 'Base.html'%} {% block title %} Login to the Blog Page {% endblock %} {% block content%} <h1>Members Login</h1> <div class="form-group"> <form method="POST" action=""> {% csrf_token %} <div class="mb-3"> <label for="exampleInputEmail1" class="form-label">User Name</label> <input type="text" class="form-control" name = "username"> <div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div> </div> <div class="mb-3"> <label for="exampleInputPassword1" class="form-label">Password</label> <input type="password" class="form-control" name="password"> </div> <button type="submit" class="btn btn-primary">Login</button> </form> <br> </div> {% endblock %}
现在,当我在提交用户详细信息后进入/members/login时,post方法中的print语句不会在控制台中打印.所以我怀疑post请求没有被重定向到login_用户功能.有人能帮我找出原因吗?