第一步:搭建项目环境
1. 创建新的Django项目2. 创建App项目3. 修改时区,时间,语言4. 创建数据库表5. 创建管理员用户6. 浏览器测试,是否成功7. 将代码上传到Git版本库中 第二步:设计数据库模型
1. 创建数据库模型文件2. 注册App(激活App项目)3. 生成迁移脚本,写入数据库表4. 使用Python Shell测试
4.1 导入数据库4.2 设置数据库后端(略)4.3 创建用户、密码、邮箱等等4.4 数据库模型的基本操作4.5 创建的用户必须唯一4.6 数据库模型的后台管理
第一步:搭建项目环境 1. 创建新的Django项目 2. 创建App项目PS E:pythonProject12021-11-28-python_studyday08loginRegister> python manage.py startapp login3. 修改时区,时间,语言
在loginRegister/settings.py中修改
# LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'zh-hans' # TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = True # 若项目需要应用到美国,东南亚等地区,需要修改时区,提高国际通用性。4. 创建数据库表
PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py makemigrations PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py migrate5. 创建管理员用户
PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py createsuperuser 用户名 (leave blank to use 'lenovo'): admin 电子邮件地址: admin@qq.com Password: Password (again): 密码跟 用户名 太相似了。 密码长度太短。密码必须包含至少 8 个字符。 这个密码太常见了。 Bypass password validation and create user anyway? [y/N]: y Superuser created successfully.6. 浏览器测试,是否成功
启动开发服务器的两种方法
第一种登陆方式:python shell命令运行
PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py runserver 9999
第二种登陆方式:快速登陆
7. 将代码上传到Git版本库中
安装Git Windows10安装Git
Git提交项目代码到本地仓库
查看Git的版本
PS E:pythonProject12021-11-28-python_studyday08loginRegister> git --version git version 2.34.1.windows.1
Git初始化
PS E:pythonProject12021-11-28-python_studyday08loginRegister> git init Initialized empty Git repository in E:/pythonProject1/2021-11-28-python_study/day08/loginRegister/.git
安装插件 .ignore,并生成python上传Git项目需要忽略内容的文件 .gitignore
添加工作区的修改文件到暂存区
PS E:pythonProject12021-11-28-python_studyday08loginRegister> git add * warning: LF will be replaced by CRLF in .idea/inspectionProfiles/profiles_settings.xml. The file will have its original line endings in your working directory
先注册用户名和邮箱
PS E:pythonProject12021-11-28-python_studyday08loginRegister> git commit -m 'loginRegister' Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository. fatal: unable to auto-detect email address (got 'LENOVO@LAPTOP-0VVRF0MM.(none)') PS E:pythonProject12021-11-28-python_studyday08loginRegister> git config --global user.email "1819 613927@qq.com" PS E:pythonProject12021-11-28-python_studyday08loginRegister> git config --global user.name "Outlo ok"
将暂存区的代码提交到本地Git仓库
PS E:pythonProject12021-11-28-python_studyday08loginRegister> git commit -m 'loginRegister' [master (root-commit) aeff891] loginRegister 23 files changed, 515 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/dataSources.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/loginRegister.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 db.sqlite create mode 100644 login/__init__.py create mode 100644 login/admin.py create mode 100644 login/apps.py create mode 100644 login/migrations/0001_initial.py create mode 100644 login/migrations/__init__.py create mode 100644 login/models.py create mode 100644 login/tests.py create mode 100644 login/views.py create mode 100644 loginRegister/__init__.py create mode 100644 loginRegister/asgi.py create mode 100644 loginRegister/settings.py create mode 100644 loginRegister/urls.py create mode 100644 loginRegister/wsgi.py create mode 100644 manage.py
查看历史记录
PS E:pythonProject12021-11-28-python_studyday08loginRegister> git log
commit aeff891c376d21e9dc5be4eaa0a6168c779441f4 (HEAD -> master)
Author: Outlook <1819613927@qq.com>
Date: Fri Jan 21 13:20:34 2022 +0800
loginRegister
第二步:设计数据库模型
1. 创建数据库模型文件
作为一个用户登录和注册项目,需要保存的都是各种用户的相关信息。很显然,我们至少需要一张用户表User,在用户表里需要保存下面的信息:
在login/models.py文件中修改
用户名(name):必填,最长不超过128个字符且唯—(unique)密码(password):必填,最长不超过256个字符邮箱地址(email):使用Django内置的邮箱类型且唯一性别(gender):性别,使用choice,只能选择男或者女,默认为男;创建时间(create_time):用户创建时间
注意点:tauto_now_add=True时为添加时的时间,更新对象时不会有变动。 修改时间(modify_time):用户最后一次修改时间
注意点:auto_now=True无论是你添加还是修改对象,时间为你添加或者修改的时间。 最后一次登录时间(last_login_time):最后一次登录时间
注意点:null=True的话,数据库中该字段是NULL,即允许空值。注意点:blank=False (默认)的话,字段没被赋值则会抛错;和数据验证(表单验证等)有关。
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.IntegerField(choices=gender_choice, default=0, verbose_name='性别')
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建的时间')
# auto_now_add=True时,为添加时的时间,更新对象时,不会有变化
# auto_now=True,无论是添加或者修改对象,时间都会添加或者修改的时间
modify_time = models.DateTimeField(auto_now=True, verbose_name='最后一次修改的时间')
last_login_time = models.DateTimeField(null=True, blank=True, verbose_name='最后一次登陆的时间')
# null针对数据库层面,blank针对表单
def __str__(self):
return self.name
class meta:
verbose_name = '网站用户管理'
verbose_name_plural = verbose_name
2. 注册App(激活App项目)
在loginRegister/settings.py中修改
PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py makemigrations
Migrations for 'login':
loginmigrations 001_initial.py
- Create model SiteUser
PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, login, sessions
Running migrations:
Applying login.0001_initial... OK
4. 使用Python Shell测试
4.1 导入数据库
PS E:pythonProject12021-11-28-python_studyday08loginRegister> python .manage.py shell Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from login.models import SiteUser4.2 设置数据库后端(略)
Django官方文档
>>> from login.models import SiteUser >>> user1 = SiteUser(name = 'user1', password = 'user1', email = 'user1@qq.com') >>> user1.save() >>> SiteUser.objects.all()4.4 数据库模型的基本操作]>
- 查看用户的创建时间、最后一次修改时间、最后一次登陆时间
>>> user1.create_time datetime.datetime(2022, 1, 12, 14, 9, 54, 336189, tzinfo=) >>> user1.modify_time datetime.datetime(2022, 1, 12, 14, 9, 54, 336189, tzinfo= ) >>> user1.last_login_time >>>
- 修改用户的密码,并查看用户的创建时间、最后一次修改时间
>>> user1.password = 'newuser1' >>> user1.save() >>> user1.password 'newuser1' >>> user1.create_time datetime.datetime(2022, 1, 12, 14, 9, 54, 336189, tzinfo=) >>> user1.modify_time datetime.datetime(2022, 1, 12, 14, 11, 33, 819047, tzinfo= )
- 查看用户的性别
>>> user1.gender 0
- 修改用户的性别
>>> user1.gender = 2 >>> user1.save() >>> user1.gender 24.5 创建的用户必须唯一 4.6 数据库模型的后台管理
在login/admin.py中修改
from django.contrib import admin # Register your models here. from login.models import SiteUser admin.site.register(SiteUser)
在login/admin.py中修改
from django.contrib import admin
# Register your models here.
from login.models import SiteUser
class SiteUserAdmin(admin.ModelAdmin):
list_display = ['name', 'gender', 'email']
list_display_links = ['name']
list_filter = ['gender', 'create_time']
admin.site.register(SiteUser, SiteUserAdmin)



