做了个登陆页面,用指定用户名和密码登录发现并不能实现页面跳转,以下是代码
views.py
from django.shortcuts import render, HttpResponse, redirect
from django.http import JsonResponse
from django import forms
from app01 import models
import datetime
from django.utils.safestring import mark_safe
from django.contrib.auth import authenticate, login, logout
from .forms import CustomLoginForm
from django.contrib import messages
from django.contrib.auth.models import User
def login_view(request):
HARDCODED_USERNAME = '123'
HARDCODED_PASSWORD = '123'
if request.method == 'POST':
form = CustomLoginForm(request, data=request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
if username == HARDCODED_USERNAME and password == HARDCODED_PASSWORD:
user = authenticate(username=username,password=password)
if user is not None:
login(request, user)
return redirect('lib/list') # 重定向到首页或其他页面
else:
messages.error(request, '用户名或密码错误')
else:
messages.error(request, '用户名或密码错误')
else:
messages.error(request, '用户名或密码错误')
else:
form = CustomLoginForm()
return render(request, 'login.html', {'form': form})
forms.py代码
from django import forms
from django.contrib.auth.forms import AuthenticationForm
class CustomLoginForm(AuthenticationForm):
username = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'}))
password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'}))
urls.py代码如下
from django.urls import path
from app01 import views
app_name = 'app01'
urlpatterns = [
# path('admin/', admin.site.urls),
path(r'', views.home),
path(r'login/', views.login_view,name='login'),
path(r'lib/list/', views.lib_list),
path(r'lib/list/<int:nid>/borrow/', views.lib_borrow),
path(r'lib/return/', views.lib_return),
path(r'phone/list/', views.phone_list),
path(r'phone/list/<int:nid>/borrow/', views.phone_borrow),
path(r'phone/return/', views.phone_return),
path(r'phone/info/<int:pk>/', views.phoneinfo_detail, name='phoneinfo_detail'),
login.html代码如下
{%load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>哈曼系统测试资产管理系统</title>
<style>
/* 其他样式保持不变 */
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f7f7f7;
}
.login-container {
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
background: #fff;
max-width: 320px; /* 限制最大宽度 */
width: 100%; /* 宽度设为100%,但不超过最大宽度 */
padding: 20px;
}
.login-form h2 {
margin-bottom: 20px;
text-align: center;
color: #333;
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 5px;
}
.form-group input {
width: 100%; /* 输入框宽度充满 */
max-width: 300px; /* 限制输入框最大宽度 */
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
.login-form button {
width: 20%;
padding: 10px;
margin-top: 15px;
border: none;
border-radius: 5px;
background-color: #007bff; /* 蓝色背景 */
color: white;
font-size: 16px;
cursor: pointer;
}
.login-form button:hover {
background-color: #0056b3; /* 蓝色背景的悬停效果 */
}
.messages {
margin-bottom: 20px; /* 与表单内容保持一定间距 */
}
.messages div {
background-color: #f8d7da; /* 错误消息的背景颜色 */
color: #721c24; /* 错误消息的文字颜色 */
padding: 10px;
border-radius: 5px;
margin-bottom: 10px;
}
</style>
</head>
<body>
<div class="messages">
{% if messages %}
{% for message in messages %}
<div{% if message.tags %} class="{{ message.tags }}"{% endif %}>
{{ message }}
</div>
{% endfor %}
{% endif %}
</div>
<div class="login-container">
<form method="post" action="{% url 'login' %}" class="login-form">
<h2>用户登录</h2>
{% csrf_token %}
<div class="form-group">
<label for="id_username">用户名</label>
<input type="text" name="username" id="id_username" required>
</div>
<div class="form-group">
<label for="id_password">密码</label>
<input type="password" name="password" id="id_password" required>
</div>
<button type="submit">登录</button>
</form>
</div>
</body>
</html>