Python:Django实现注册登录功能

ps:1.因为菜所以还没有使用加密方法和对密码进行加密存储,表单使用的get,密码明文存储

      2.使用的mysql数据库,python连接mysql,需要安装pymysql,可以pip install pymysql

      3.win10,python3.9,django4.0,mysql5.7

1.创建用户表

使用已有的数据库创建好对应的用户表以存储账号密码信息,表中至少包含账号、密码两个字段

 

 

 2.html实现注册、登录页面

ps:form表单中的{% csrf_token %}是由于Django的验证机制需要添加的。

register.html如下:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
    <h1>
        <p style="text-align:center">注册页面</p>
    </h1>
    <form action="save" method="get">
        {% csrf_token %}
        <p style="text-align:center">账号:<input id="username" type="username" name="username" required /></p>
        <p style="text-align:center">密码:<input id="password" type="password" name="password" required /></p>
        <p style="text-align:center"> <input onsubmit="check()" type="submit" value="注册" /></p>
    </form>
</body>
</html>

 

login.html如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
    <style>
        p{
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>
        <p style="text-align:center">登录页面</p>
    </h1>
    <form action="query" method="get">
        {% csrf_token %}
        <p>用户:<input type="username" name="username" /></p>
        <p>密码:<input type="password" name="password"/></p>
        <p> <input type="submit" value="登录" />
        <p><a href="http://127.0.0.1:8000/register/">前往注册</a></p>
</form>
</body>
</html>

3.创建Djiango的app

在Django项目终端中,执行命令创建app

 .\manager.py startapp appname

4.注册和登录后台逻辑实现

在创建的app下的views.py中,编写注册登录逻辑:

from ssl import AlertDescription
from django.http import HttpResponseRedirect, response
from django.shortcuts import redirect, render

# Create your views here.

from django.contrib import admin
from django.urls import path
from django.shortcuts import render
from django.shortcuts import HttpResponse
import pymysql
#登录页面
def login(request):
    #指定要访问的页面,render的功能:讲请求的页面结果提交给客户端
    return render(request,'login.html')
#注册页面
def register(request):
    return render(request,'register.html')
#定义一个函数,用来保存注册的数据
def save(request):
    has_regiter = 0#用来记录当前账号是否已存在,0:不存在 1:已存在
    a = request.GET#获取get()请求
    #通过get()请求获取前端提交的数据
    userName = a.get('username')
    passWord = a.get('password')
    #print(userName,passWord)
    #连接数据库
    db = pymysql.connect(host='localhost',port=3306,user='root',passwd='password123',db='test')
    #创建游标
    cursor = db.cursor()
    #SQL语句
    sql1 = 'select * from mywebusers'
    #执行SQL语句
    cursor.execute(sql1)
    #查询到的所有用户账号存储到all_users中
    all_users = cursor.fetchall()
    i = 0
    while i < len(all_users):
        if userName in all_users[i]:
            ##表示该账号已经存在
            has_regiter = 1

        i += 1
    if has_regiter == 0:
        # 将用户名与密码插入到数据库中
        sql2 = 'insert into mywebusers(username,password) values(%s,%s)'
        cursor.execute(sql2,(userName,passWord))
        db.commit()
        cursor.close()
        db.close()
        #注册成功后跳转到登录页面
        return HttpResponseRedirect('/login')
    else:

        cursor.close()
        db.close()
       
        return HttpResponse('该账号已存在')

def query(request):
    a = request.GET
    userName = a.get('username')
    passWord = a.get('password')
    loginInfo = (userName,passWord)
    db = pymysql.connect(host='localhost',port=3306,user='root',passwd='password123',db='test')
    cursor = db.cursor()
    sql = 'select username,password from mywebusers'
    cursor.execute(sql)
    all_users = cursor.fetchall()
    cursor.close()
    db.close()
    has_user = 0
    i = 0
    while i < len(all_users):
        if loginInfo == all_users[i]:
            has_user = 1
        i += 1
    if has_user == 1:
        return HttpResponse('登录成功')
    else:
        return HttpResponse('用户名或密码有误')

5.项目文件配置

1.在已创建的Django项目下,创建templates文件夹,用来存放注册和登录页面

2.在Django项目的urls.py文件中,配置项目访问路径:

from django.contrib import admin
from django.urls import path
from webApp.views import login
from webApp.views import register
from webApp.views import save
from webApp.views import query


urlpatterns = [
    path('admin/', admin.site.urls),#系统默认创建的
    path('login/',login),#访问登录页面
    path('register/',register),#访问注册页面
    path('register/save',save),#注册页面表单中的save交给后台save函数处理
    path('login/query',query)#登录页面表单中的query交给后台query函数处理
]

3.在项目文件的settings.py文件中,配置创建的app以及存放注册登录页面的文件夹

配置app:

找到如下内容,添加已经创建的app:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'webApp',#添加app
]

配置使用的存放注册登录页面文件夹:

找到如下内容,修改DIRS对应行内容,文件中需要import os

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

6.启动项目访问

.\manager.py runserver启动项目,访问试试!!

posted @ 2022-05-05 11:00  诟笑  阅读(1162)  评论(0编辑  收藏  举报