首页 > 其他分享 >订单交易平台三(登录界面整个实现过程)阶段一(只实现简单的登录功能)

订单交易平台三(登录界面整个实现过程)阶段一(只实现简单的登录功能)

时间:2024-10-05 22:10:59浏览次数:9  
标签:username 登录 form 实现 django import password 交易平台 md5

1.在视图函数account进行写代码逻辑(需要了解django中form组件的知识、md5码加密、脚本的编写)

1.1 登录界面后端的编写

"""  在account.py文件   """

from django.shortcuts import render, redirect
from web import models

from utils.encrypt import md5

# 1.定义类
from django import forms


class LoginForm(forms.Form):
    role = forms.ChoiceField(
        required=True,
        choices=(("2", "客户"), ("1", "管理员")),
        widget=forms.Select(attrs={"class": "form-control"})
    )
    username = forms.CharField(
        required=True,
        widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "用户名"})
    )
    password = forms.CharField(
        required=True,
        widget=forms.PasswordInput(attrs={"class": "form-control", "placeholder": "密码"},render_value=True)
    )


def login(request):
    if request.method == "GET":
        form = LoginForm()
        return render(request, "login.html", {"form": form})

    # 1.接收并获取数据(数据格式或是否为空验证 - Form组件 & ModelForm组件)
    form = LoginForm(data=request.POST)
    if not form.is_valid():
        print("验证失败")
        return render(request, "login.html", {"form": form})

    # {'role': '1', 'username': 'asdfasdf', 'password': '123123'}
    # print(form.cleaned_data)  # {"username":'',"password":'xxx","role":xxx}
    role = form.cleaned_data.get("role")
    username = form.cleaned_data.get("username")
    password = form.cleaned_data.get("password")
    password = md5(password)

    # 2.去数据库校验  1管理员  2客户
    mapping = {"1": "ADMIN", "2": "CUSTOMER"}
    if role not in mapping:
        return render(request, "login.html", {'form': form, 'error': "角色不存在"})

    if role == "1":
        user_object = models.Administrator.objects.filter(active=1, username=username, password=password).first()
    else:
        user_object = models.Customer.objects.filter(active=1, username=username, password=password).first()

    # 2.1 校验失败
    if not user_object:
        return render(request, "login.html", {'form': form, 'error': "用户名或密码错误"})

    # 2.2 校验成功,用户信息写入session+进入项目后台
    request.session['user_info'] = {'role': mapping[role], 'name': user_object.username, 'id': user_object.id}

    return redirect("/level/list/")

1.2 使用两个脚本(在script文件中进行创建、编写)

"""  在init_admin.py文件中   """

# 启动django
import os
import sys
import django

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day06.settings')
django.setup()  # 伪造让django启动

from web import models
from utils.encrypt import md5

models.Administrator.objects.create(username='root', password=md5("root"), mobile="1888888889")

"""  在init_customer.py文件中   """

# 启动django
import os
import sys
import django

base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(base_dir)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day06.settings')
django.setup()  # 伪造让django启动

from web import models
from utils.encrypt import md5

# 创建级别
# level_object = models.Level.objects.create(title="VIP", percent=90)

models.Customer.objects.create(
    username='xinchen',
    password=md5("xinchen"),
    mobile='1999999998',
    level_id=1,
    creator_id=1
)

1.3 md5码加密

"""  在encrypt.py文件中   """


import hashlib
from django.conf import settings


def md5(data_string):
    obj = hashlib.md5(settings.SECRET_KEY.encode('utf-8'))
    obj.update(data_string.encode('utf-8'))
    return obj.hexdigest()

img

2.前端界面的编写

2.1 登录界面的编写

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap/css/bootstrap.css' %}">
    <style>
        .box {
            width: 450px;
            border: 1px solid #f0f0f0;
            margin-left: auto;
            margin-right: auto;
            margin-top: 100px;

            padding-left: 40px;
            padding-right: 40px;
            padding-bottom: 30px;

            box-shadow: 5px 10px 10px rgb(0 0 0 / 5%);
        }
    </style>
</head>
<body>

<div class="box">
    <h2 style="text-align: center;">用户登录</h2>
    <form method="post" novalidate>
        {% csrf_token %}
        <div class="form-group">
            <label>角色</label>
            {{ form.role }}
        </div>
        <div class="form-group">
            <label>用户名</label>
            {{ form.username }}
        </div>
        <div class="form-group">
            <label>密码</label>
            {{ form.password }}
        </div>
        <button type="submit" class="btn btn-primary">登 录</button>
        <span style="color: red;">{{ error }}</span>

        <a href='{% url 'sms_login' %}' style="float: right;">短信登录</a>
    </form>
</div>

</body>
</html>

2.2 短信登录界面的编写

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{% static 'plugins/bootstrap/css/bootstrap.css' %}">
    <style>
        .box {
            width: 450px;
            border: 1px solid #f0f0f0;
            margin-left: auto;
            margin-right: auto;
            margin-top: 100px;

            padding-left: 40px;
            padding-right: 40px;
            padding-bottom: 30px;

            box-shadow: 5px 10px 10px rgb(0 0 0 / 5%);
        }
    </style>
</head>
<body>
<div class="box">
    <form method="post">
        <h2 style="text-align: center;">短信登录</h2>
        {% csrf_token %}
        <div class="form-group">
            <label>手机号</label>
            <input type="text" class="form-control" placeholder="手机号">
        </div>
        <div class="form-group">
            <label>短信验证码</label>
            <div class="row">
                <div class="col-xs-7">
                    <input type="text" class="form-control" placeholder="短信验证码">
                </div>
                <div class="col-xs-5">
                    <input type="button" value="发送短信" class="btn btn-default"/>
                </div>
            </div>

        </div>


        <button type="submit" class="btn btn-primary">登 录</button>
        <a href="{% url 'login' %}" style="float: right;">用户名登录</a>
    </form>
</div>
</body>
</html>

标签:username,登录,form,实现,django,import,password,交易平台,md5
From: https://www.cnblogs.com/Tmars/p/18448567

相关文章

  • 订单交易平台二(写代码之前的准备工作)
    订单交易平台准备工作1.先搭建环境#1.先创建python基本环境,并且创建虚拟环境#2.创建完成后,先安装你所需要的Django版本:pipinstallDjango==3.2#3.创建Django项目:django-adminstartprojectapp01.#4.创建Django,在app01根目录文件下创建apps文件,里面放app文件:py......
  • c语言模拟实现qsort
    要想模拟首先qsort函数首先我们应该知道这个函数的功能是什么接下来我为大家引入一个列子我们想要实现一组有序数的升序可以通过冒泡排序法思想是 两两相邻元素进行比较 代码如下 通过冒泡排序法 #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>voidbubbl......
  • 基于SpringBoot+Vue+协同过滤算法的音乐推荐系统设计与实现(源码+论文+PPT+部署文档教
    具体实现截图网站首页页面主要包括系统首页、热门歌曲、音乐资讯、留言板、个人中心等内容,并根据需要进行详细操作;如图5-1所示:图5-1网站首页界面图在注册流程中,用户在Vue前端填写必要信息(如用户名、密码等)并提交。前端将这些信息通过HTTP请求发送到Java后端。后端处理......
  • 订单交易平台一
    简介:订单交易平台核心的功能模块:认证模块,用户名密码或手机短信登录(60s有效)。角色管理,不同角色具有不同权限和展示不同菜单。管理员,充值客户,下单客户管理,除了基本的增删改查以外,支持对客户可以分级,不同级别后续下单折扣不同。交易中心管理员可以给客户余......
  • 鸿蒙应用示例:镂空效果实现教程
    在鸿蒙系统中,为了给用户带来更加生动的视觉体验,我们可以使用不同的技术手段来实现图像和文字的镂空效果。本文将通过三个具体的示例来展示如何在鸿蒙系统中实现实心矩形镂空、实心圆镂空以及文字镂空的效果。示例代码//定义一个名为Index的应用入口组件@Entry@Componentstruct......
  • 一个真实可用的登录界面!
    需要工具:MySQL数据库、vscode上的php插件PHPServer等项目结构:login| --backend        | --database.sql        |--login.php        |--welcome.php|--index.html|--script.js|--style.css项目开展index.html:        首先需......
  • 忘记帝国cms网站后台登录密码和认证码如何找回
    1.准备重置脚本下载附件:下载提供的重置脚本文件。将文件上传到网站根目录。2.访问重置页面访问重置页面:访问 /e/update/resetuser.php。默认密码为 123456,也可以在 resetuser.php 中修改这个密码。3.重置密码输入密码:输入默认密码 123456。跳转到......
  • 帝国CMS重置后台登录密码方法,帝国CMS后台登录密码忘记的解决方法。
    适用版本帝国CMS7.2及7.5版本操作步骤登录服务器登录到您的服务器,确保您有访问数据库的权限。找到帝国CMS数据库使用phpMyAdmin或其他数据库管理工具登录到您的数据库。打开phome_enewsuser数据表在数据库中找到 phome_enewsuser 表(phome 为默认......
  • 鸿蒙应用示例:实现文本高亮与自动换行
    在设计应用界面时,我们常常需要对某些重要的文本进行高亮显示,以引起用户的注意。同时,在一些场景中,我们需要确保长文本能够自动换行,以适应不同的屏幕尺寸和布局需求。本文将通过两个示例,分别展示如何在HarmonyOS应用中实现这些功能。【示例一】文本高亮显示@Entry@Componentstruct......
  • 基于Hadoop+Scrapy爬虫+可视化大屏分析的图书馆管理系统设计与实现(前后端分离+人脸识
    具体实现截图论文参考系统测试从多个角度进行测试找到系统中存在的问题是本系统首要的测试目的,通过功能测试寻找出系统缺陷并改正,确保系统没有缺陷。在测试过程中证明系统满足客户需求,发现问题和不足及时改正。测试完成之后得出测试结论。系统测试目的在酒店管理系统的......