Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计

文章目录

  • 1. 项目开始前的思考
  • 2. 搭建项目环境
  • 3. git管理
    • 3.1 ignore插件:
    • 3.2 git提交项目代码到本地仓库
  • 4. 数据库模型设计
    • 4.1 设置数据库后端
    • 4.2 数据库模型文件
    • 4.3 测试
    • 4.4 数据库模型后台管理

可重用注册登录系统

  • 注册(邮箱注册,手机,微信,QQ)
  • 登录
  • 注销

1. 项目开始前的思考

  • 路由配置
urlpattern = [ 					#路由规则
	path('/register/', views.register), 		#注册时指定的视图函数
	path('/login/', views.login), 
	path('/logout/', views.logout), 
]
  • 视图配置(重点)
  • 数据库模型Model:
class User: 
	id, name, password, email, create_time, update_time
	last_time(最后一次登录的时间), gender, province
  • 模板Template: register.html, login.html, index.html

2. 搭建项目环境

  • 创建Django项目
    首先在pycharm中新建一个虚拟环境用来创建Django项目:
    Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第1张图片

  • 创建app
    在terminal中:
    python manage.py startapp login

  • 设置时区和语言

# filename: loginRegister/settings.py 
# LANGUAGE_CODE = 'en-us' 
LANGUAGE_CODE = 'zh-hans' 

# TIME_ZONE = 'UTC' 
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
  • 设置快速启动
    取代每次terminal:python manage.py runserver 9999
    Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第2张图片
    此时浏览器进入后台管理会提示无数据库,继续添加数据库。

  • 数据库表生成

$ python manage.py migrate # 将迁移脚本的内容写入数据库并创建数据库表 
$ python manage.py createsuperuser # 创建后台登录的超级用户

Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第3张图片

3. git管理

3.1 ignore插件:

此步骤用于上传文件至仓库时自动忽略一部分文件,可以自定义要忽略上传的文件。

安装ignore插件:
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第4张图片
找到git:
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第5张图片

筛选出python:
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第6张图片
此时会出现.gitignore文件:
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第7张图片

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

首先需要安装好git,并且注册git名称及邮箱

  • 初始化:git init
  • 安装插件.ignore,并生成python上传git项目需要忽略内容的文件,上一步已做
  • 提交修改代码至暂存区:git add *
  • 将暂存区的文件上传至仓库并添加标签:git commit -m "创建项目环境"
  • 查看历史提交记录:git log
    Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第8张图片

4. 数据库模型设计

作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息。很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息:

  • 用户名(name): 必填,最长不超过128个字符且唯一(unique)
  • 密码(password): 必填,最长不超过256个字符
  • 邮箱地址(email): 使用Django内置的邮箱类型且唯一
  • 性别(gender): 性别, 使用choice,只能选择男或者女或者未知,默认为未知;
  • 创建时间(create_time): 用户创建时间
    注意点: auto_now_add=True时为添加时的时间,更新对象时不会有变动。
  • 修改时间(modify_time):用户最后一次修改时间
    注意点: auto_now=True无论是你添加还是修改对象,时间为你添加或者修改的时间。
  • 最后一次登录时间(last_login_time): 最后一次登录时间
    注意点: null=True的话,数据库中该字段是NULL,即允许空值
    注意点: blank=False(默认)的话,字段没被赋值则会抛错;和数据验证(表单验证等)有

4.1 设置数据库后端

Django支持MySQL, Sqlite, oracle等数据库, 此处选择默认的sqlite,不做修改.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

4.2 数据库模型文件

# login/models.py 
from django.db import models 
# Create your models here. 
# appname_siteuser 
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.IntegerField(choices=gender_choice, default=0, verbose_name="性别") 
	# auto_now_add=True时为添加时的时间,更新对象时不会有变动。
	# auto_now=True无论是你添加还是修改对象,时间为你添加或者修改的时间。 
	create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时 间") 
	modify_time = models.DateTimeField(auto_now=True, verbose_name="最后一次修改时 间") 
 	# null针对数据库层面的, blank针对表单的 
	last_login_time = models.DateTimeField(null=True, blank=True, verbose_name="最后一次登录时间") 
def __str__(self): 
	return self.name 

class Meta: 
	verbose_name = "网站用户管理" 
	verbose_name_plural = verbose_name

在主配置文件中注册login应用:

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'login',			#修改的内容

]

Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第9张图片
生成login的迁移脚本:python manage.py makemigrations
在这里插入图片描述

写入数据库:manage.py migrate
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第10张图片
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第11张图片

4.3 测试

打开数据库文件db.sqlite3, 查看是否有数据库表login_siteuser,如果有,则操作成功
测试添加用户:
安装一个补齐软件:pip install ipython
进入交互式环境中:python manage.py shell
添加user1:

In [4]: user1 = SiteUser(name="user1",password="user1",email="[email protected]")

In [5]: user1.save()

In [6]: SiteUser.objects.all()
Out[6]: ]>

In [7]: user1.create_time
Out[7]: datetime.datetime(2021, 3, 13, 8, 32, 46, 279682, tzinfo=)

In [8]: user1.modify_time
Out[8]: datetime.datetime(2021, 3, 13, 8, 32, 46, 279682, tzinfo=)

In [9]: user1.last_login_time

In [10]: user1.gender
Out[10]: 0

In [11]: user1.password = "newuser1"

In [12]: user1.save()

In [13]: user1.create_time
Out[13]: datetime.datetime(2021, 3, 13, 8, 32, 46, 279682, tzinfo=)

In [14]: user1.modify_time
Out[14]: datetime.datetime(2021, 3, 13, 8, 34, 56, 137072, tzinfo=)

In [15]: user1.gender = 2

In [16]: user1.save()

添加user2,邮箱仍选为user1邮箱:
user2 = SiteUser(name="user1",password="user2",email="[email protected]")
保存时报错:
Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第12张图片

4.4 数据库模型后台管理

# login/admin.py 
from django.contrib import admin 
from login.models import SiteUser 
# Register your models here. 
# 后台管理设置的信息 
class SiteUserAdmin(admin.ModelAdmin): 
	list_display = ['name', 'gender', 'email'] 
	list_display_links = ['name'] 
	list_filter = ['gender', 'create_time'] 
	list_per_page = 10 
	
admin.site.register(SiteUser, SiteUserAdmin)

查看网页结果:

Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第13张图片

最后将结果写入配置环境中:

git add *
git commit -m "add SiteUser admin management"
git log

Python进阶4:Django3-用户登录注册系统项目搭建/数据库模型设计_第14张图片

你可能感兴趣的:(Django,python)