11.1、基于Django4的可重用、用户注册和登录系统搭建

news2024/9/24 13:14:16

文章目录

  • 系统的功能
    • 思路分析
  • 搭建项目环境
    • 创建项目(虚拟环境)
    • 创建子应用
    • 修改语言、时区
    • 创建数据库表
    • 启动项目
  • git提交项目代码到本地仓库
    • git initi 初始化,创建本地git仓库
    • pycharm安装 .ignore插件,来设置git的忽略文件
    • 提交代码修改到本地git仓库
    • 查看历史提交记录
  • 设计数据库模型
    • 数据库模型文件
    • 生成迁移脚本并写入数据库
    • 数据库模型后台管理
  • 路由和视图函数框架搭建
  • 系统大体框架

系统的功能

注册:邮箱注册(主要)、手机注册、微信、QQ
登录
注销

思路分析

客户端向服务器请求 http://xxxx:port/register ,经过wsgi封装,交给Django路由处理(URL Conf,路由配置)

  • 路由配置
urlpattern=[
	  path('/register/',views.register)
	  path('/login/',views.login)
	  path('/logout/',views.logout)
]

根据url路由配置文件,确定找哪个视图函数(业务逻辑)

  • 视图配置(重点)

用户注册信息需要写入数据库,则使用model组件。ORM(
对象关系映射),通过面向对象的方式对关系型数据库进行管理。

  • 数据库模型配置Model
 class User:
 		id,name,password,email,create_time,update_time
 		last_time(最后一次登录的时间),gender,province

为了给用户返回一个好看的前端界面,那么就需要使用template模板。然后模板将信息返回给用户。

  • 模板template
    reister.html , login.html, index.html

搭建项目环境

创建项目(虚拟环境)

新建项目loginRegister
项目使用虚拟环境,是隔离的python环境
1处 指示项目的位置
2处 选择“New environment using Virtualenv”,表示要新建一个虚拟环境
3处 指虚拟环境创建的地址,选择哪,虚拟环境就创建在哪。这里选择创建在项目地址当中
4处 指示基础python解释器
在这里插入图片描述

创建子应用

在这里插入图片描述

修改语言、时区

修改文件 loginRegister/settings.py
在这里插入图片描述
启动项目:
方式一:
在终端: python manage.py runserver
默认是8000端口,也可以直接在最后指定端口 python manage.py runserver 9999
方式二:
pycharm中run–>Edis Configurations,然后按照下图配置
图中的hostIP地址是开发的IP地址,也可以写成0.0.0.0,表示开发所有的IP

在这里插入图片描述

再次点击run即可运行项目.

此时只能访问首页,无法访问后端。在浏览器访问127.0.0.1:999/admin,出现报错信息,这是因为数据库内还没有生成表,需要先将数据更改写到数据库。
在这里插入图片描述

创建数据库表

在terminal运行命令,生成迁移文件并作用到数据库
在这里插入图片描述
为了在后台登录,需要先创建一个超级用户admin:
在这里插入图片描述

启动项目

启动方式有2种,如上。
在浏览器内能正常登录超级用户
在这里插入图片描述
至此,第一步完成。

git提交项目代码到本地仓库

下载git: https://git-scm.com/download/win
安装git:https://blog.csdn.net/fzx1597965407/article/details/124371720

pycharm中,点击File–>Settings—>Version Control—>Git,选择git.exe所在路径,
在这里插入图片描述当出现无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写。。。。的错误时,需要配置环境变量。可以参考文章 https://blog.csdn.net/Elon15/article/details/125929606

在pycharm配置完成
在这里插入图片描述

git initi 初始化,创建本地git仓库

在这里插入图片描述

pycharm安装 .ignore插件,来设置git的忽略文件

在这里插入图片描述右击项目loginRegister,New—> .ignore File —> .gitignore File(Git)
然后选择语言python

在这里插入图片描述

提交代码修改到本地git仓库

git add * 将当前代码修改保存到暂存区
git commit -m 将暂存区的代码提交到本地git仓库
在这里插入图片描述

查看历史提交记录

在这里插入图片描述

设计数据库模型

为完成用户登录与注册的功能,至少需要一个用户表User

  • 用户名:必填,最长不超过128个字符且唯一
  • 密码:必填,最长不超过256个字符
  • 邮箱地址:使用Django内置的邮箱类型且唯一
  • 性别:使用choice,能选择男或女或未知,默认为未知
  • 创建时间:
    auto_now_add=True时为添加时的时间,更新对象时不会有变动
  • 修改时间:
    auto_now=True 无论是添加还是修改对象,时间为添加或者修改的时间
  • 最后一次登录时间:
    blank用于表单的认证,被设为blank=False(默认为False)的字段在填写表单时不能为空。
    null用于规定数据库中的列的非空性,被设为null=False(默认为False)的字段在数据库中对应的列不能为空(用SQL来说明就是为该列添加了NOT NULL的约束)。

数据库模型文件

在这里插入图片描述编写文件 login/models.py

from django.db import models

# Create your models here.
class SiteUser(models.Model):
    gender_choice=(
        (0,"未知"),
        (1,"男"),
        (2,"女"),
    )
    name=models.CharField(max_length=128,unique=True,verbose_name="用户名")
    password=models.CharField(max_length=256,verbose_name="密码")
    email=models.EmailField(unique=True,verbose_name="电子邮箱")
    #gender=models.CharField(choices=gender_choice,default=0,verbose_name="性别")
    gender=models.IntegerField(choices=gender_choice,default=0,verbose_name="性别")
    create_time=models.DateTimeField(auto_now_add=True,verbose_name="创建时间")
    modify_time=models.DateTimeField(auto_now=True,verbose_name="最后一次修改时间")
    last_login_time=models.DateTimeField(null=True,blank=True,verbose_name="最后一次登录时间")

    def __str__(self): # 魔术方法,字符串的友好展示,便于调试
        return self.name

    class Meta: #内嵌类,给model定义元数据
       verbose_name="网站用户管理"
       verbose_name_plural=verbose_name

Django支持sqlite ,oracle, mysql等数据库,这里使用默认的sqlite。

生成迁移脚本并写入数据库

生成迁移文件,并写入数据库
在这里插入图片描述能看到数据表siteuser创建成功
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
将代码变更上传到git本地仓库

git add *
git commit -m "添加数据库模型设置"
git log

此时后台管理只能看到默认的用户和组管理,没有将自己设计的模型加进去。
如何将自己设计的模型添加到后台管理中去呢?
编辑 login/admin.py 文件:注册自己的模型
在这里插入图片描述此时在浏览器内能管理之前创建的用户,也可以创建新用户等等
在这里插入图片描述

数据库模型后台管理

还可以添加一些其他的功能,比如列表展示页、按照姓名和创建时间搜索等
编辑 login/admin.py 文件:
在这里插入图片描述

在这里插入图片描述
将代码变更存储到本地git仓库
在这里插入图片描述

路由和视图函数框架搭建

路由设计:
URL 视图views

URL视图Views模板功能
/index/login.views.indexindex.html首页
/login/login.views.loginlogin.html登录界面
/register/login.views.registerregister.html注册界面
/logout/login.views.logout无需返回界面登出界面

访问策略:
未登录人员,无论是访问index还是login和logout,全部都跳转至login界面
已登录人员,访问login会自动跳转到index界面
已登录人员,不允许直接访问register页面,需要先logout
登出后,自动跳转到login界面

系统大体框架

编辑主路由配置文件 loginRegister/urls.py
当访问路径不包含什么内容时,访问子路由配置文件
在这里插入图片描述
在子应用login下创建python文件 urls.py,编写内容如下
在这里插入图片描述编写视图函数,login/views.py

from django.shortcuts import render,redirect

# Create your views here.
def index(request):
    pass
    return render(request,'login/index.html')
def login(request):
    pass
    return render(request, 'login/login.html')
def register(request):
    pass
    return render(request, 'login/register.html')
def logout(request):
    pass
    # redirect:重定向,跳转某一个路由
    return redirect('/login/')

新建目录templates/login
新建HTML文件,templates/login/index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<h1>首页测试页面</h1>
</body>
</html>

templates/login/login.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录界面</title>
</head>
<body>
<h1>用户登录</h1>
<form>
    用户名:<input type="text" placeholder="username"> <br/>
    密码:<input type="password" placeholder="password"> <br/>
    <input type="submit" value="登录">
</form>
</body>
</html>

templates/login/register.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册界面</title>
</head>
<body>
<h1>用户注册</h1>
<form>
    用户名:<input type="text" placeholder="username"> <br/>
    电子邮箱:<input type="email" placeholder="email"> <br/>
    密码:<input type="password" placeholder="password"> <br/>
    确认密码:<input type="password" placeholder="password"> <br/>
    <input type="submit" value="注册">
</form>
</body>
</html>

至此,整个后端的答题框架已经完成,在浏览器内输入http:127.0.0.1:8000/index、http:127.0.0.1:8000/login、http:127.0.0.1:8000/register能跳转至用户首页、登录界面以及注册界面。

在这里插入图片描述git status 能查看上次提交之后修改的状态
git diff login/urls.py 能查看文件login/urls.py的具体修改

接下来还有许多优化的地方,比如显示界面的优化,用户登录时,用户名和密码是否正确的判断,等等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/131871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot+VUE前后端分离项目学习笔记 - 【09 SpringBoot集成MyBatis-Plus和SwaggerUI】

集成mybatis-plus依赖 官网 : https://baomidou.com/ pom.xml <!-- mybatis-plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></depe…

01月份图形化一级打卡试题

活动时间 从2023年 1月1日至1月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; &#xff08;1&#xff09;小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 &#xff08;2&#xff09;小朋友做完题目后&…

认证的未来:2023 年值得关注的四大趋势

在经济不确定性和地缘政治紧张的一年中&#xff0c;数字领域充满网络威胁也就不足为奇了。从广泛的假冒诈骗到日益增多的短信网络钓鱼&#xff0c;网络攻击的频率和严重程度在 2022 年有所增加&#xff0c;这突显了所有行业的组织身份验证漏洞。 因此&#xff0c;当我们翻开新…

amis组件学习的配置介绍(二)

table view 表格视图 这个看文档也很好理解&#xff0c;但是还是需要介绍一下。 trs&#xff1a; <Array>设置表格行属性。tds: <Array>设置单元格属性。 {"type": "table-view",// 设置表格行"trs": [{"background": &…

常见排序算法(上)

篮球哥温馨提示&#xff1a;编程的同时不要忘记锻炼哦&#xff01;稳定的排序算法&#xff0c;可以设计成不稳定的. 目录 1、 认识排序 2、常见排序的分类 3、直接插入排序 4、希尔排序(缩小增量排序) 5、选择排序 6、堆排序 1、 认识排序 在学校中&#xff0c;如果我们…

QML学习笔记【03】:动画

动画是在指定的时间内&#xff0c;一系列属性的持续变化 1 动画元素&#xff08;Animation Elements&#xff09; 有几种类型的动画&#xff0c;每一种都在特定情况下都有最佳的效果&#xff0c;下面列出了一些常用的动画&#xff1a; PropertyAnimation&#xff08;属性动画…

人工智能学习07--pytorch01

一、pytorch简介 1、与TensorFlow区别 2、常用网络层 二、pytorch需要&#xff1a; 1、anaconda 2、CUDA 只能在NVIDIA上运行 ↓我发现电脑果然没有这个显卡 https://zhidao.baidu.com/question/2084255692200398828.html 3、pycharm 新项目要配置python的编译器&#xff…

Leetcode 36. 有效的数独

请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考示例图&#xff09;注意…

FastDfs分布式文件存储系统

FastDfs分布式文件存储系统 FastDfs 是一个开源的高性能分布式文件系统&#xff08;DFS&#xff09;。 它的主要功能包括&#xff1a;文件存储&#xff0c;文件同步和文件访问&#xff0c;以及高容量和负载平衡。主要解决了海量数据存储问题&#xff0c;特别适合以中小文件&am…

基于Springboot+Mybatis+mysql+vue+html校园招聘管理系统

基于SpringbootMybatismysqlvuehtml校园招聘管理系统二、系统介绍三、功能展示1.首页2.个人中心(学生端)3.简历信息管理&#xff08;学生端&#xff09;4.应聘信息(学生端)5.企业信息&#xff08;企业&#xff09;6.招聘信息管理&#xff08;企业&#xff09;7.应聘信息管理&am…

谷粒学院——Day15【微信支付】

❤ 作者主页&#xff1a;Java技术一点通的博客 ❀ 个人介绍&#xff1a;大家好&#xff0c;我是Java技术一点通&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 记得关注、点赞、收藏、评论⭐️⭐️⭐️ &#x1f4e3; 认真学习&#xff0c;共同进步&#xff01;&am…

【观察】美达电器:以数字化重塑质量管理体系,构筑车企新“护城河”

在汽车行业&#xff0c;越来越多的企业走上数字化转型道路&#xff0c;运用数字化手段&#xff0c;从产品研发、生产制造、供应链管理等方面优化内部协同&#xff0c;从而降低管理成本&#xff0c;提升市场竞争力。美达电器(重庆)有限公司&#xff08;以下简称美达电器&#xf…

day17-缓冲流转换流序列化流打印流Properties

day17_JAVAOOP 课程目标 1. 【理解】什么是缓冲流 2. 【掌握】缓冲流的使用 3. 【理解】转换流 4. 【理解】序列化流 5. 【理解】打印流 6. 【掌握】Properties集合的使用缓冲流 ​ 前期我们学习了基本的一些流&#xff0c;作为IO流的入门&#xff0c;今天我们要见识一些更强…

babylon.js魔方建模

本文主要内容可能和babylon并无太紧密的关联&#xff0c; 主要是对旋转&#xff08; 空间想象力 &#xff09;的练习。 本来想写个魔方练练&#xff0c;就想着顺便练练baboly. 结果反正是最重要的交互逻辑没有实现。 标题已经说明了本文的主题是建模&#xff0c;也就是说&…

ArcGIS基础实验操作100例--实验29矢量数据空间校正

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验29 矢量数据空间校正 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

android中service实现原理分析

前言&#xff1a; 一开始的目标是解决各种各样的ANR问题的&#xff0c;我们知道&#xff0c;ANR总体上分有四种类型&#xff0c;这四种类型有三种是和四大组件相对应的&#xff0c;所以&#xff0c;如果想了解ANR发生的根因&#xff0c;对安卓四大组件的实现流程是必须要了解的…

Odoo 16 企业版手册 - 库存管理之产品管理

产品管理 记录与产品相关的每个方面对于有效维护库存至关重要。Odoo 库存模块使您可以在数据库中配置新产品&#xff0c;这些产品将有效跟踪和监控所有操作&#xff0c;以加强各自产品的库存管理。库存模块中的产品配置过程与销售和购买模块的流程几乎相似。您将在库存的主菜单…

一步一步学爬虫(4)数据存储之CSV文件存储

一步一步学爬虫&#xff08;4&#xff09;数据存储之CSV文件存储4.3 CSV文件存储4.3.1 写入4.3.2 读取4.3.3 总结4.3 CSV文件存储 CSV&#xff0c;全称Comma-Separated Values&#xff0c;中文叫做逗号分隔值或字符分隔值&#xff0c;其文件以纯文本形式存储表格数据。CSV文件…

java.lang.OutOfMemoryError: GC overhead limit exceeded问题分析及解决

一、错误重现 2022-12-29 10:12:07.210 ERROR 73511 --- [nio-8001-exec-6] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.…

SQL刷题宝典-MySQL速通力扣困难题

&#x1f4e2;作者&#xff1a; 小小明-代码实体 &#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/as604049322 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 欢迎讨论&#xff01; 本手册目录&#xff1a; 文章目录前言Markdown导入数据库python脚…