Django 认证系统修改
Django Authentication system modifications
我是Django认证系统的新手,找不到正确的调试方法。
我想创建一个函数来处理登录请求,并且我已经完成了相同的必要步骤。
在主项目 URLS.py 文件中创建了登录 url 路径。
path('members/', include('django.contrib.auth.urls')),
path('members/', include('members.urls')),
在会员应用程序中创建了一个登录 url 以指向在 views.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')
我在模板文件夹中创建了一个登录页面。
{% 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 方法中的打印语句不会打印在控制台中。所以我怀疑 post 请求没有被重定向到 login_user 函数。谁能帮我找出原因?
Djnago 将触发它首先为路径 members/login
找到的视图,即 django.contrib.auth
模块的登录视图。您可以交换视图的顺序以访问视图的 login
视图:
urlpatterns = [
path('members/', include('members.urls')), # 🖘 `members.urls first
path('members/', include('django.contrib.auth.urls'))
]
但最好为您的视图提供不同的路径,以防止混淆。
我是Django认证系统的新手,找不到正确的调试方法。
我想创建一个函数来处理登录请求,并且我已经完成了相同的必要步骤。
在主项目 URLS.py 文件中创建了登录 url 路径。
path('members/', include('django.contrib.auth.urls')), path('members/', include('members.urls')),
在会员应用程序中创建了一个登录 url 以指向在 views.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')
我在模板文件夹中创建了一个登录页面。
{% 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 方法中的打印语句不会打印在控制台中。所以我怀疑 post 请求没有被重定向到 login_user 函数。谁能帮我找出原因?
Djnago 将触发它首先为路径 members/login
找到的视图,即 django.contrib.auth
模块的登录视图。您可以交换视图的顺序以访问视图的 login
视图:
urlpatterns = [
path('members/', include('members.urls')), # 🖘 `members.urls first
path('members/', include('django.contrib.auth.urls'))
]
但最好为您的视图提供不同的路径,以防止混淆。