Python全系列 教程
3567个小节阅读:5929.4k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
本次实战目标:以普通的4个字母的验证码作为演示
思考问题:
提示
借用session实现登录模块代码
新建django项目:captcha_study,子应用:captcha_app
在mysql数据库新建 captcha_study 库
settings中配置数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'captcha_study',
'USER': 'root',
'PASSWORD': '123456',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
迁移数据库
由于只使用了django自带的应用的数据库模型,所以直接 migrate 就可以
xxxxxxxxxx
python manage.py migrate
创建 superuser
xxxxxxxxxx
python manager.py createsuperuser
修改主应用的urls.py:
xxxxxxxxxx
path('', include('captcha_app.urls')),
新增子应用的urls.py
xfrom django.urls import path
from .views import *
urlpatterns = [
path('login/', login,name='login'),
path('logout/', logout,name='logout'),
path('index/', index,name='index'),
]
views中修改:
xxxxxxxxxx
from django.shortcuts import render,redirect
from django.contrib import auth
from django.contrib.auth.decorators import login_required
# Create your views here.
def login(reuqest):
'''
判断请求方式
如果是get请求,返回登录页面
如果是post请求,进行登录校验
'''
if reuqest.method == 'GET':
# 获取错误信息
error = reuqest.session.get('error')
# 删除错误信息
reuqest.session['error'] = ''
return render(reuqest,'login.html',{'error':error})
else:
# 获取用户名和密码
uname = reuqest.POST.get('uname')
pwd = reuqest.POST.get('pwd')
# 校验用户名和密码
user = auth.authenticate(username=uname,password=pwd)
# 判断用户是否存在
if user:
# 将用户信息保存到session中
auth.login(reuqest,user)
# 跳转到首页
return redirect('index')
else:
# 将错误信息存储到session
reuqest.session['error'] = '用户名或密码错误'
# 返回登录页面
return redirect('login')
def logout(request):
auth.logout(request)
return redirect('login')
@login_required(login_url='login')
def index(request):
return render(request,'index.html')
新增template,在应用中建立 templates 文件夹
新增index.html
xxxxxxxxxx
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>主页</title>
</head>
<body>
<h3>欢迎使用验证码系统</h3>
<a href="{% url 'logout' %}">退出登录</a>
</body>
</html>
新增login.html
xxxxxxxxxx
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h3>欢迎登录</h3>
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
uname:<input type="text" name="uname" id=""><br>
pwd:<input type="password" name="pwd" id=""><br>
<input type="submit" value="登录"><br>
{% if error %} {{ error }} {% endif %}
</form>
</body>
</html>
<body>
<form method="post" action="{% url 'captcha_app:login' %}">
{% csrf_token %}
<table>
<tr>
<td>用户名:</td>
<td><input type="text" value="" name="username" id="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" value="" name="password" id="password"></td>
</tr>
{% if error_message %}
<tr>
<td colspan="2"><strong>{{ error_message }}</strong></td>
</tr>
{% endif %}
<tr>
<td colspan="2">
<input type="submit" value="登录">
</td>
</tr>
</table>
</form>
</body>
</html>