从零开始--django项目 带验证码登录 注册 注销 列表显示

这篇博客详细介绍了如何从零开始使用Django创建项目,包括新建项目、设置环境、安装mysqlclient模块、配置MySQL、创建用户模型、实现注册、登录(含验证码验证)、注销功能,以及用户列表的显示。教程涵盖了Django的多个关键步骤,适合初学者入门。

一:新建django项目:
1.1:在文件夹输入cmd 命令 django-admin startproject 项目名
1.2:在pycharm中打开新建的项目 File/open 找到创建项目的路径 打开项目

二:创建环境
2.1:在pycharm中 File/Settings/project 项目名/project interpreter/;
2.1.1:show all(添加新的环境)
2.1.2:点+ ok

三:添加django模块:mysqlclient模块
3.1:在pycharm中 File/Settings/project 项目名/project interpreter/;
3.2:点+ 搜索django 选择版本2.0.7 点击 install package
3.3:点+ 搜索mysqlclient 选择版本1.4.0 点击 install package
安装完成后 在Terminal中 输入命令 :python manage.py runserver 测试django是否安装成功 点击出现的网址出现小火箭表示安装成功

四:打开mysql 创建数据库:
4.1:在cmd中输入: mysql -uroot -p
password:12345 (输入自己的密码)
4.2:查看数据库 show databases;(查看所有的数据库,如果有跟你要创建的数据库重名的就删除
删除数据库 drop database 数据库名称
添加数据库 create database user

五:配置mysql
在项目下setting.py中找到 DATABASES 进行修改:
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
#写的数据库的名称
‘NAME’: ‘user’,
#默认的地址
‘HOST’: ‘127.0.0.1’,
#端口号
‘PORT’: 3306,
#账号
‘USER’: ‘root’,
#密码
‘PASSWORD’: ‘12345’,
}
}

五:创建app
5.1:在Terminal中 输入命令 :python manage.py startapp user
5.2:在Settings中
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
#添加的app的名称进行注册
‘user’,

]

六:写模型models.py 写需要创建的表结构
class UserInfo(models.Model):
username = models.CharField(max_length=20,unique=True,null=False)
pwd = models.CharField(max_length=10,null=False)
6.2:生成迁引文件:
在Terminal中 输入命令 :python manage.py makemigrations
执行迁移文件:
在Terminal中 输入命令 :python manage.py migrate
完成后你的migrations 出现 0001_initial.py就成功了
然后打开mysql客户端输入:show databases; 找到新建的表为成功

七:写html 先得注册添加数据 在app项目下创建文件夹templates

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1 align="center" style="color: red">{{ msg }}</h1>
<form action="/register/" method="post">
    {% csrf_token %}
    <table align="center" border="1">
        <tr>
            <td>账号</td>
            <td>
                <input type="text" name="username" value="{{ username }}">
            </td>
        </tr>
        <tr>
            <td>密码</td>
            <td>
                <input type="password" name="pwd" value="{{ pwd }}">
            </td>
        </tr>
        <tr>
            <td>确认密码</td>
            <td>
                <input type="password" name="next_pwd" value="{{ next_pwd }}">
            </td>
        </tr>
        <tr>
            <td align="center" colspan="2">
                <input type="submit" value="注册">
            </td>
        </tr>
    </table>
</form>
</body>
</html>

八:去app项目/views.py写注册的处理函数
from django.shortcuts import render,HttpResponse,redirect
from user.models import UserInfo

def register(request):
if request.method == ‘GET’:
return render(request, ‘register.html’)
else:
username = request.POST.get(‘username’,’’).strip()
pwd = request.POST.get(‘pwd’,’’).strip()
next_pwd = request.POST.get(‘next_pwd’,’’).strip()
data = {}
if username == ‘’:
data[‘msg’] = ‘账号不能为空’
#去数据库中获取username 与 从网页发送过来的username进行对比
#如果返回的值是0就True 1就False返回错误信息
elif UserInfo.objects.filter(username=username):
data[‘msg’] = ‘账号已存在’
elif pwd == ‘’:
data[‘msg’] = ‘密码不能为空’
elif pwd != next_pwd:
data[‘msg’] = ‘两次密码输入不一致’
else:
#实例化对象
user = UserInfo()
user.username = username
user.pwd = pwd
user.save()
return HttpResponse(‘注册成功去登陆’)
return render(request,‘register.html’,data)
在urls中添加path
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘register/’,register),
]

九:测试注册成功后:打开mysql客户端查询表内容:select * from user_userinfo;
有存入数据就算成功

十:写login登录的页面.在app项目文件夹templates写login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1 align="center" style="color: red">{{ msg }}</h1>
<form method="post" action="/login/">
    {% csrf_token %}
    <table align="center" border="1">
        <tr>
            <td>用户名</td>
            <td>
                <input type="text" name="username" value="{{ username }}">
            </td>
        </tr>
        <tr>
            <td>密码</td>
            <td>
                <input type="password" name="pwd" value="{{ pwd }}">
            </td>
        </tr>
        <tr>
            <td>验证码</td>
            <td>
                <input type="text" name="yzm"><a href="/login/">{{ yzm }}看不清换一张</a>
            </td>
        </tr>
        <tr>
            <td align="center" colspan="2">
                <input type="submit" value="登录">
            </td>
        </tr>
    </table>
    <a href="/register/">还没注册点击</a>
</form>
</body>
</html>

十一:去app项目/views.py写登录的处理函数----登录里加入了验证码所以也要写生成验证码的函数
#生成验证码
import string
import random
def get_yzm():
yzm = ‘’
aStr = string.ascii_letters+string.digits
for i in range(4):
yzm += random.choice(aStr)
return yzm
#登录的函数
def login(request):
if request.method == ‘GET’:
yzm = get_yzm()
data = {
‘yzm’:yzm
}
request.session[‘yzm’] = yzm
return render(request,‘login.html’,data)
else:
yzm = request.POST.get(‘yzm’,’’).strip()
username = request.POST.get(‘username’,’’).strip()
pwd = request.POST.get(‘pwd’,’’).strip()
data = {}
if yzm.lower() != request.session.get(‘yzm’).lower():
data[‘msg’] = ‘验证码输入有误’
else:
user = UserInfo.objects.get(username=username,pwd=pwd)
data = {
‘username’ : user.username
}
id = user.pk
request.session[‘id’] = id
return redirect(’/datail/’,data)
yzm = get_yzm()
data[‘yzm’] = yzm
request.session[‘yzm’] = yzm
return render(request,‘login.html’,data)
在urls中添加path
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘register/’,register),
path(‘login/’,login),
]

十二:登录成功后跳转成功的页面 -顺带显示列表信息
写datail登录成功的页面.在app项目文件夹templates写datail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% csrf_token %}
<h4 align="center" style="color: red">欢迎{{ user.username }}登录</h4>
<a href="/login/">注销</a>
<table align="center" border="1">
    <tr>
        <td>序号</td>
        <td>账号</td>
        <td>密码</td>
    </tr>
    <tr>
        <td>{{ user.id }}</td>
        <td>{{ user.username }}</td>
        <td>{{ user.pwd }}</td>
    </tr>
</table>
</body>
</html>

十二:去app项目/views.py写datail登录成功的处理函数
#登录成功的函数
def datali(requset):
id = requset.session.get(‘id’,’’)
if id :
user = UserInfo.objects.get(pk=id)
data = {
‘user’:user
}
return render(requset,‘datail.html’,data)
else:
return redirect(’/login/’)
#显示列表内数据的函数
def get_userList(request):
userList = UserInfo.objects.all()
data = {
‘userList’: userList
}
return render(request,‘datail.html’,data)
在urls中添加path
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘register/’,register),
path(‘login/’,login),
path(‘datali/’,datali),
]

十三: 写userlist的列表显示页面.在app项目文件夹templates写userlist.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1" align="center">
    <tr>
        <td>序号</td>
        <td>账号</td>
        <td>密码</td>
    </tr>
    {% for user in userList %}
    <tr>
        <td>{{ forloop.counter }}</td>
        <td>{{ user.username }}</td>
        <td>{{ user.pwd }}</td>
    </tr>
    {% endfor %}
</table>
</body>
</html>

十四:去app项目/views.py写userlist的列表显示的函数 注销的函数
#注销的函数
def logout(request):
request.session.flush()
return redirect(’/login/’)
def gat_userList(request):
userList = UserInfo.objects.all()
data = {
‘userList’: userList
}
return render(request,‘userlist.html’,data)
在urls中添加path

urlpatterns = [
path(‘admin/’, admin.site.urls),
path(‘register/’,register),
path(‘login/’,login),
path(‘datali/’,datali),
path(‘logout/’,logout),
path(‘userList/’,get_userList),
path(‘userlist/’,gat_userList),

]

运行项目 python manage.py runserver 完活

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值