2020-12-22 09:46发布
项目主要页面介绍
1.首页
2.注册
3.登录
2.项目开发模式
开发模式前后端不分离后端框架Django+Jinja2模板引擎前端框架Vue.js
3.准备项目代码仓库
源码托管网站
1、码云(https://gitee.com/)
2、创建源码远程仓库:website
3、克隆项目代码仓库新建文件夹下载githttps://git-scm.com/download/win
按默认方式安装。克隆项目:gitclonehttps://gitee.com/lgc1286191951/website.git
2.创建项目工程
进入本地项目仓库
$cdwebsite2.创建美多商城虚拟环境,安装Django框架$mkvirtualenv-ppython3website$pipinstalldjango3.创建Django工程$django-adminstartprojectwebsite创建工程完成后:运行程序,测试结果。
4.配置MySQL数据库
1.新建MySQL数据库
1.新建MySQL数据库:test$createdatabasemeiduocharset=utf8;2.新建MySQL用户
$createusertestidentifiedby‘123456’;
2.配置MySQL数据库
DATABASES={‘default’:{‘ENGINE’:‘django.db.backends.mysql’,#数据库引擎‘HOST’:‘127.0.0.1’,#数据库主机‘PORT’:3306,#数据库端口‘USER’:‘root’,#数据库用户名root‘PASSWORD’:‘123456’,#数据库用户密码‘NAME’:‘test’#数据库名字},}可能出现的错误
ErrorloadingMySQLdbmodule:Nomodulenamed‘MySQLdb’.出现错误的原因:
Django中操作MySQL数据库需要驱动程序MySQLdb目前项目虚拟环境中没有驱动程序MySQLdb解决办法:
安装PyMySQL扩展包因为MySQLdb只适用于Python2.x的版本,Python3.x的版本中使用PyMySQL替代MySQLdb
3.安装PyMySQL扩展包
1.安装驱动程序在windows下安装Mysql$pipinstallPyMySQL2.在工程同名子目录的__init__.py文件中,添加如下代码:
frompymysqlimportinstall_as_MySQLdb
install_as_MySQLdb()配置完成后:运行程序,测试结果。
5.配置Redis数据库
1.安装django-redis扩展包
1.安装django-redis扩展包在windows下安装redis$pipinstalldjango-redis2.django-redis使用说明文档点击进入文档
2.配置Redis数据库
CACHES={“default”:{#默认“BACKEND”:“django_redis.cache.RedisCache”,“LOCATION”:“redis://127.0.0.1:6379/0”,“OPTIONS”:{“CLIENT_CLASS”:“django_redis.client.DefaultClient”,}},“session”:{#session“BACKEND”:“django_redis.cache.RedisCache”,“LOCATION”:“redis://127.0.0.1:6379/1”,“OPTIONS”:{“CLIENT_CLASS”:“django_redis.client.DefaultClient”,}},“verify_code”:{#验证码“BACKEND”:“django_redis.cache.RedisCache”,“LOCATION”:“redis://127.0.0.1:6379/2”,“OPTIONS”:{“CLIENT_CLASS”:“django_redis.client.DefaultClient”,}},}SESSION_ENGINE=“django.contrib.sessions.backends.cache”SESSION_CACHE_ALIAS=“session”default:
默认的Redis配置项,采用0号Redis库。session:
状态保持的Redis配置项,采用1号Redis库。SESSION_ENGINE
验证码的Redis配置项,采用2号Redis库verify_code
修改session存储机制使用Redis保存。SESSION_CACHE_ALIAS:
使用名为"session"的Redis配置项存储session数据。配置完成后:运行程序,测试结果。
6.配置前端静态文件
1.准备静态文件
2.指定静态文件加载路径
STATIC_URL=‘/static/’配置静态文件加载路径STATICFILES_DIRS=[os.path.join(BASE_DIR,‘static’)]配置完成后:运行程序,测试结果。
http://127.0.0.1:8000/static/images/test.png
7.创建用户模块子应用
创建用户模块子应用
1.准备apps包,用于管理所有应用2.在apps包下创建应用users$cd~/projects/meiduo_project/meiduo_mall/meiduo_mall/apps$python…/…/manage.pystartappusers
2.查看项目导包路径
重要提示:
若要知道如何导入users应用并完成注册,需要知道项目导包路径已知导包路径
website/website已知'users’应用所在目录website_project/website/website/apps/users得到导入’users’应用的导包路路径是website/apps/user
3.注册用户模块子应用
用Pycharm开发时,把apps设置为资源路径
8.展示用户注册页面
1.准备用户注册模板文件
加载页面静态文件
2.定义用户注册视图
classRegisterView(View):“”“用户注册”""
defget(self,request):
"""
提供注册界面
:paramrequest:请求对象
:return:注册界面
returnrender(request,'register.html')
定义用户注册路由1.总路由
urlpatterns=[#usersurl(r’^’,include(‘users.urls’,namespace=‘users’)),]2.子路由
urlpatterns=[#注册url(r’^register/$’,views.RegisterView.as_view(),name=‘register’),]
9.定义用户模型类
Django默认用户认证系统
Django自带用户认证系统它处理用户账号、组、权限以及基于cookie的用户会话。Django认证系统位置django.contrib.auth包含认证框架的核心和默认的模型。django.contrib.contenttypes是Django内容类型系统,它允许权限与你创建的模型关联。Django认证系统同时处理认证和授权认证:验证一个用户是否它声称的那个人,可用于账号登录。授权:授权决定一个通过了认证的用户被允许做什么。Django认证系统包含的内容用户:用户模型类、用户认证。权限:标识一个用户是否可以做一个特定的任务,MIS系统常用到。组:对多个具有相同权限的用户进行统一管理,MIS系统常用到。密码:一个可配置的密码哈希系统,设置密码、密码校验。
2.Django默认用户模型类
Django认证系统中提供了用户模型类User保存用户的数据。User对象是认证系统的核心。Django认证系统用户模型类位置
django.contrib.auth.models.User
父类AbstractUser介绍
User对象基本属性创建用户(注册用户)必选:username、password创建用户(注册用户)可选:email、first_name、last_name、last_login、date_joined、is_active、is_staff、is_superuse判断用户是否通过认证(是否登录):is_authenticated创建用户(注册用户)的方法user=User.objects.create_user(username,email,password,**extra_fields)用户认证(用户登录)的方法fromdjango.contrib.authimportauthenticateuser=authenticate(username=username,password=password,**kwargs)处理密码的方法设置密码:set_password(raw_password)校验密码:check_password(raw_password)3.自定义用户模型类思考:为什么要自定义用户模型类?
但是Django默认用户模型类中没有mobile字段,所以要自定义用户模型类。如何自定义用户模型类?Django默认用户模型类的文档继承自AbstractUser(可通过阅读Django默认用户模型类的源码得知)。新增mobile字段。fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUser
Createyourmodelshere.
classUser(AbstractUser):“”“自定义用户模型类”""mobile=models.CharField(max_length=11,unique=True,verbose_name=‘手机号’)
classMeta:
db_table='tb_users'
verbose_name='用户'
verbose_name_plural=verbose_name
def__str__(self):
returnself.username
知识要点Django自带用户认证系统,核心就是User对象,并封装了一系列可用的方法和属性。Django用户认证系统包含了一系列对用户的操作,比如:模型类,认证,权限,分组,密码处理等。Django用户认证系统中的用户模型类可以自定义,继承自AbstractUser。
10.迁移用户模型类
指定用户模型类
思考:为什么Django默认用户模型类是User?
阅读源代码:‘django.conf.global_settings’AUTH_USER_MODEL=‘auth.User’结论:
Django用户模型类是通过全局配置项AUTH_USER_MODEL决定的配置规则:在settings.py下进行配置AUTH_USER_MODEL=‘应用名.模型类名’指定本项目用户模型类AUTH_USER_MODEL=‘users.User’
2.迁移用户模型类
1.创建迁移文件
pythonmanage.pymakemigrations
2.执行迁移文件
pythonmanage.pymigrate
11.用户注册业务实现
1.设计接口基本思路
对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口。设计接口的思路:分析要实现的业务逻辑:明确在这个业务中涉及到几个相关子业务。将每个子业务当做一个接口来设计。分析接口的功能任务,明确接口的访问方式与返回数据:请求方法(如GET、POST、PUT、DELETE等)。请求地址。请求参数(如路径参数、查询字符串、表单、JSON等)。响应数据(如HTML、JSON等)。
2.用户注册接口设计
1.请求方式
选项方案请求方法POST请求地址/register/2.请求参数:表单参数
参数名类型是否必传说明usernamestring是用户名passwordstring是密码password2string是确认密码mobilestring是手机号allowstring是是否同意用户协议3.响应结果:HTML
register.html响应结果响应内容注册失败响应错误提示注册成功重定向到首页
3.用户注册接口定义
1.注册视图
defpost(self,request):
实现用户注册
:return:注册结果
pass
2.总路由
urlpatterns=[#usersurl(r’^’,include(‘users.urls’,namespace=‘users’)),]3.子路由
12.用户注册前端逻辑
为了学会使用Vue.js的双向绑定实现用户的交互和页面局部刷新效果。
用户注册页面绑定Vue数据
绑定内容:变量、事件、错误提示等
[removed][removed]
注册即是·巅峰
登录
{#{%csrf_token%}#}
{{csrf_input}}
用户名:
[[error_name_message]]
密码:
[[error_password_message]]
确认密码:
[[error_password2_message]]
手机号:
[[error_phone_message]]
图形验证:
@blur="send_check_image_code">
[[error_image_code_message]]
同意”用户使用协议“
[[error_allow_message]]
{%ifregister_errmsg%}
{{register_errmsg}}
{%endif%}
项目主要页面介绍
1.首页
2.注册
3.登录
2.项目开发模式
开发模式前后端不分离后端框架Django+Jinja2模板引擎前端框架Vue.js
3.准备项目代码仓库
源码托管网站
1、码云(https://gitee.com/)
2、创建源码远程仓库:website
3、克隆项目代码仓库新建文件夹下载githttps://git-scm.com/download/win
按默认方式安装。克隆项目:gitclonehttps://gitee.com/lgc1286191951/website.git
2.创建项目工程
进入本地项目仓库
$cdwebsite2.创建美多商城虚拟环境,安装Django框架$mkvirtualenv-ppython3website$pipinstalldjango3.创建Django工程$django-adminstartprojectwebsite创建工程完成后:运行程序,测试结果。
4.配置MySQL数据库
1.新建MySQL数据库
1.新建MySQL数据库:test$createdatabasemeiduocharset=utf8;2.新建MySQL用户
$createusertestidentifiedby‘123456’;
2.配置MySQL数据库
DATABASES={‘default’:{‘ENGINE’:‘django.db.backends.mysql’,#数据库引擎‘HOST’:‘127.0.0.1’,#数据库主机‘PORT’:3306,#数据库端口‘USER’:‘root’,#数据库用户名root‘PASSWORD’:‘123456’,#数据库用户密码‘NAME’:‘test’#数据库名字},}可能出现的错误
ErrorloadingMySQLdbmodule:Nomodulenamed‘MySQLdb’.出现错误的原因:
Django中操作MySQL数据库需要驱动程序MySQLdb目前项目虚拟环境中没有驱动程序MySQLdb解决办法:
安装PyMySQL扩展包因为MySQLdb只适用于Python2.x的版本,Python3.x的版本中使用PyMySQL替代MySQLdb
3.安装PyMySQL扩展包
1.安装驱动程序在windows下安装Mysql$pipinstallPyMySQL2.在工程同名子目录的__init__.py文件中,添加如下代码:
frompymysqlimportinstall_as_MySQLdb
install_as_MySQLdb()配置完成后:运行程序,测试结果。
5.配置Redis数据库
1.安装django-redis扩展包
1.安装django-redis扩展包在windows下安装redis$pipinstalldjango-redis2.django-redis使用说明文档点击进入文档
2.配置Redis数据库
CACHES={“default”:{#默认“BACKEND”:“django_redis.cache.RedisCache”,“LOCATION”:“redis://127.0.0.1:6379/0”,“OPTIONS”:{“CLIENT_CLASS”:“django_redis.client.DefaultClient”,}},“session”:{#session“BACKEND”:“django_redis.cache.RedisCache”,“LOCATION”:“redis://127.0.0.1:6379/1”,“OPTIONS”:{“CLIENT_CLASS”:“django_redis.client.DefaultClient”,}},“verify_code”:{#验证码“BACKEND”:“django_redis.cache.RedisCache”,“LOCATION”:“redis://127.0.0.1:6379/2”,“OPTIONS”:{“CLIENT_CLASS”:“django_redis.client.DefaultClient”,}},}SESSION_ENGINE=“django.contrib.sessions.backends.cache”SESSION_CACHE_ALIAS=“session”default:
默认的Redis配置项,采用0号Redis库。session:
状态保持的Redis配置项,采用1号Redis库。SESSION_ENGINE
验证码的Redis配置项,采用2号Redis库verify_code
修改session存储机制使用Redis保存。SESSION_CACHE_ALIAS:
使用名为"session"的Redis配置项存储session数据。配置完成后:运行程序,测试结果。
6.配置前端静态文件
1.准备静态文件
2.指定静态文件加载路径
STATIC_URL=‘/static/’配置静态文件加载路径STATICFILES_DIRS=[os.path.join(BASE_DIR,‘static’)]配置完成后:运行程序,测试结果。
http://127.0.0.1:8000/static/images/test.png
7.创建用户模块子应用
创建用户模块子应用
1.准备apps包,用于管理所有应用2.在apps包下创建应用users$cd~/projects/meiduo_project/meiduo_mall/meiduo_mall/apps$python…/…/manage.pystartappusers
2.查看项目导包路径
重要提示:
若要知道如何导入users应用并完成注册,需要知道项目导包路径已知导包路径
website/website已知'users’应用所在目录website_project/website/website/apps/users得到导入’users’应用的导包路路径是website/apps/user
3.注册用户模块子应用
用Pycharm开发时,把apps设置为资源路径
8.展示用户注册页面
1.准备用户注册模板文件
加载页面静态文件
2.定义用户注册视图
classRegisterView(View):“”“用户注册”""
defget(self,request):
"""
提供注册界面
:paramrequest:请求对象
:return:注册界面
"""
returnrender(request,'register.html')
定义用户注册路由1.总路由
urlpatterns=[#usersurl(r’^’,include(‘users.urls’,namespace=‘users’)),]2.子路由
urlpatterns=[#注册url(r’^register/$’,views.RegisterView.as_view(),name=‘register’),]
9.定义用户模型类
Django默认用户认证系统
Django自带用户认证系统它处理用户账号、组、权限以及基于cookie的用户会话。Django认证系统位置django.contrib.auth包含认证框架的核心和默认的模型。django.contrib.contenttypes是Django内容类型系统,它允许权限与你创建的模型关联。Django认证系统同时处理认证和授权认证:验证一个用户是否它声称的那个人,可用于账号登录。授权:授权决定一个通过了认证的用户被允许做什么。Django认证系统包含的内容用户:用户模型类、用户认证。权限:标识一个用户是否可以做一个特定的任务,MIS系统常用到。组:对多个具有相同权限的用户进行统一管理,MIS系统常用到。密码:一个可配置的密码哈希系统,设置密码、密码校验。
2.Django默认用户模型类
Django认证系统中提供了用户模型类User保存用户的数据。User对象是认证系统的核心。Django认证系统用户模型类位置
django.contrib.auth.models.User
父类AbstractUser介绍
User对象基本属性创建用户(注册用户)必选:username、password创建用户(注册用户)可选:email、first_name、last_name、last_login、date_joined、is_active、is_staff、is_superuse判断用户是否通过认证(是否登录):is_authenticated创建用户(注册用户)的方法user=User.objects.create_user(username,email,password,**extra_fields)用户认证(用户登录)的方法fromdjango.contrib.authimportauthenticateuser=authenticate(username=username,password=password,**kwargs)处理密码的方法设置密码:set_password(raw_password)校验密码:check_password(raw_password)3.自定义用户模型类思考:为什么要自定义用户模型类?
但是Django默认用户模型类中没有mobile字段,所以要自定义用户模型类。如何自定义用户模型类?Django默认用户模型类的文档继承自AbstractUser(可通过阅读Django默认用户模型类的源码得知)。新增mobile字段。fromdjango.dbimportmodelsfromdjango.contrib.auth.modelsimportAbstractUser
Createyourmodelshere.
classUser(AbstractUser):“”“自定义用户模型类”""mobile=models.CharField(max_length=11,unique=True,verbose_name=‘手机号’)
classMeta:
db_table='tb_users'
verbose_name='用户'
verbose_name_plural=verbose_name
def__str__(self):
returnself.username
知识要点Django自带用户认证系统,核心就是User对象,并封装了一系列可用的方法和属性。Django用户认证系统包含了一系列对用户的操作,比如:模型类,认证,权限,分组,密码处理等。Django用户认证系统中的用户模型类可以自定义,继承自AbstractUser。
10.迁移用户模型类
指定用户模型类
思考:为什么Django默认用户模型类是User?
阅读源代码:‘django.conf.global_settings’AUTH_USER_MODEL=‘auth.User’结论:
Django用户模型类是通过全局配置项AUTH_USER_MODEL决定的配置规则:在settings.py下进行配置AUTH_USER_MODEL=‘应用名.模型类名’指定本项目用户模型类AUTH_USER_MODEL=‘users.User’
2.迁移用户模型类
1.创建迁移文件
pythonmanage.pymakemigrations
2.执行迁移文件
pythonmanage.pymigrate
11.用户注册业务实现
1.设计接口基本思路
对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口。设计接口的思路:分析要实现的业务逻辑:明确在这个业务中涉及到几个相关子业务。将每个子业务当做一个接口来设计。分析接口的功能任务,明确接口的访问方式与返回数据:请求方法(如GET、POST、PUT、DELETE等)。请求地址。请求参数(如路径参数、查询字符串、表单、JSON等)。响应数据(如HTML、JSON等)。
2.用户注册接口设计
1.请求方式
选项方案请求方法POST请求地址/register/2.请求参数:表单参数
参数名类型是否必传说明usernamestring是用户名passwordstring是密码password2string是确认密码mobilestring是手机号allowstring是是否同意用户协议3.响应结果:HTML
register.html响应结果响应内容注册失败响应错误提示注册成功重定向到首页
3.用户注册接口定义
1.注册视图
classRegisterView(View):“”“用户注册”""
defget(self,request):
"""
提供注册界面
:paramrequest:请求对象
:return:注册界面
"""
returnrender(request,'register.html')
defpost(self,request):
"""
实现用户注册
:paramrequest:请求对象
:return:注册结果
"""
pass
2.总路由
urlpatterns=[#usersurl(r’^’,include(‘users.urls’,namespace=‘users’)),]3.子路由
urlpatterns=[#注册url(r’^register/$’,views.RegisterView.as_view(),name=‘register’),]
12.用户注册前端逻辑
为了学会使用Vue.js的双向绑定实现用户的交互和页面局部刷新效果。
用户注册页面绑定Vue数据
绑定内容:变量、事件、错误提示等
[removed][removed]
[removed][removed]
[removed][removed]
用户注册
{#{%csrf_token%}#}
{{csrf_input}}
@blur="send_check_image_code">
{%ifregister_errmsg%}
{%endif%}
[removed][removed]