【Django开发】0到1美多商城项目md教程第2篇:展示用户注册页面,1. 创建用户模块子应用【附代码文档】

本文主要是介绍【Django开发】0到1美多商城项目md教程第2篇:展示用户注册页面,1. 创建用户模块子应用【附代码文档】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设计和定义。短信验证码,避免频繁发送短信验证码。账号登录,用户名登录。登录,登录开发文档。用户基本信息,查询并渲染用户基本信息。收货地址,省市区三级联动。收货地址,展示地址前后端逻辑。商品数据库表设计,SPU和SKU。准备商品数据,容器化方案Docker。首页广告,展示首页商品频道分类。商品列表页,列表页面包屑导航。商品搜索,Haystack扩展建立索引。商品详情页,统计分类商品访问量。购物车管理,添加购物车。购物车管理,删除购物车。订单,结算订单。提交订单,使用乐观锁并发下单。对接系统,订单支付功能。页面静态化,首页广告页面静态化。MySQL读写分离,MySQL主从同步。。部署。meiduo_mallBuild Setup。Summary。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


全套教程部分目录:


部分文件图片:

展示用户注册页面

创建用户模块子应用

1. 创建用户模块子应用

1.准备apps包,用于管理所有应用

2.在apps包下创建应用users

bash $ cd ~/projects/meiduo_project/meiduo_mall/meiduo_mall/apps $ python ../../manage.py startapp users

2. 查看项目导包路径

重要提示:

  • 若要知道如何导入users应用并完成注册,需要知道项目导包路径

已知导包路径

  • meiduo_project/meiduo_mall

已知 'users'应用所在目录

  • meiduo_project/meiduo_mall/meiduo_mall/apps/users

得到导入'users'应用的导包路径是:meiduo_mall/apps/users

3. 注册用户模块子应用

```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',

'meiduo_mall.apps.users', # 用户模块应用

] ```

注册完users应用后,运行测试程序。

追加导包路径

思考:

  • 是否可以将注册users应用做的更加简便?
  • 按照如下形式,直接以应用名users注册

```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',

'users', # 用户模块应用

] ```

分析:

  • 已知导包路径

  • meiduo_project/meiduo_mall

  • 已知'users'应用所在目录

  • meiduo_project/meiduo_mall/meiduo_mall/apps/users

  • 若要直接以应用名'users'注册

  • 需要一个导包路径:meiduo_project/meiduo_mall/meiduo_mall/apps

解决办法

python * 追加导包路径:`meiduo_project/meiduo_mall/meiduo_mall/apps`

1. 追加导包路径

1.查看项目BASE_DIR

2.追加导包路径

2. 重新注册用户模块应用

```python INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',

'users', # 用户模块应用

] ```

重新注册完users应用后,运行测试程序。

3. 知识要点

  1. 查看导包路径

  2. 通过查看导包路径,可以快速的知道项目中各个包该如何的导入。

  3. 特别是接手老项目时,可以尽快的适应项目导包的方式。

  4. 追加导包路径

  5. 通过追加导包路径,可以简化某些目录复杂的导包方式。

展示用户注册页面

1. 准备用户注册模板文件

加载页面静态文件

html <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>美多商城-注册</title> <link rel="stylesheet" type="text/css" href="{{ static('css/reset.css') }}"> <link rel="stylesheet" type="text/css" href="{{ static('css/main.css') }}"> </head>

2. 定义用户注册视图

```python class RegisterView(View): """用户注册"""

def get(self, request):"""提供注册界面:param request: 请求对象:return: 注册界面"""return render(request, 'register.html')

```

3. 定义用户注册路由

1.总路由

python urlpatterns = [ # users url(r'^', include('users.urls', namespace='users')), ]

2.子路由

python urlpatterns = [ # 注册 url(r'^register/$', views.RegisterView.as_view(), name='register'), ]

用户模型类

定义用户模型类

1. 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
  • 创建用户(注册用户)的方法 python user = User.objects.create_user(username, email, password, **extra_fields)

  • 用户认证(用户登录)的方法 python from django.contrib.auth import authenticate user = authenticate(username=username, password=password, **kwargs)

  • 处理密码的方法

    • 设置密码:set_password(raw_password)
    • 校验密码:check_password(raw_password)

3. 自定义用户模型类

思考:为什么要自定义用户模型类?

  • 观察注册界面会发现,美多商城注册数据必选用户mobile信息
  • 但是Django默认用户模型类中没有mobile字段,所以要自定义用户模型类。

如何自定义用户模型类?

  • 继承自AbstractUser(可通过阅读Django默认用户模型类的源码得知) 。
  • 新增mobile字段。

```python from django.db import models from django.contrib.auth.models import AbstractUser

Create your models here.

class User(AbstractUser): """自定义用户模型类""" mobile = models.CharField(max_length=11, unique=True, verbose_name='手机号')

class Meta:db_table = 'tb_users'verbose_name = '用户'verbose_name_plural = verbose_namedef __str__(self):return self.username

```

4. 知识要点

  1. Django自带用户认证系统核心就是User对象,并封装了一系列可用的方法和属性。
  2. Django用户认证系统包含了一系列对用户的操作,比如:模型类,认证,权限,分组,密码处理等。
  3. Django用户认证系统中的用户模型类可以自定义,继承自AbstractUser
  4. [Django用户认证系统说明文档](

迁移用户模型类

1. 指定用户模型类

思考:为什么Django默认用户模型类是User?

  • 阅读源代码:'django.conf.global_settings' python AUTH_USER_MODEL = 'auth.User'

结论:

  • Django用户模型类是通过全局配置项 AUTH_USER_MODEL 决定的

配置规则:

python AUTH_USER_MODEL = '应用名.模型类名'

```python

指定本项目用户模型类

AUTH_USER_MODEL = 'users.User' ```

2. 迁移用户模型类

1.创建迁移文件

  • python manage.py makemigrations

2.执行迁移文件

  • python manage.py migrate

3. 知识要点

  1. 用户认证系统中的用户模型类,是通过全局配置项 AUTH_USER_MODEL 决定的。
  2. 如果迁移自定义用户模型类,必须先配置 AUTH_USER_MODEL

用户注册业务实现

用户注册业务逻辑分析

1. 用户注册业务逻辑分析

用户注册接口设计和定义

1. 设计接口基本思路

  • 对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口。
  • 设计接口的思路:

  • 分析要实现的业务逻辑:

    • 明确在这个业务中涉及到几个相关子业务。
    • 将每个子业务当做一个接口来设计。
  • 分析接口的功能任务,明确接口的访问方式与返回数据:

    • 请求方法(如GET、POST、PUT、DELETE等)。
    • 请求地址。
    • 请求参数(如路径参数、查询字符串、表单、JSON等)。
    • 响应数据(如HTML、JSON等)。

2. 用户注册接口设计

1.请求方式

|选项|方案| |---|---| |请求方法|POST| |请求地址|/register/|

2.请求参数:表单参数

|参数名|类型|是否必传|说明| |---|---|---|---| |username|string|是|用户名| |password|string|是|密码| |password2|string|是|确认密码| |mobile|string|是|手机号| |sms_code|string|是|短信验证码| |allow|string|是|是否同意用户协议|

3.响应结果:HTML

  • register.html

|响应结果|响应内容| |---|---| |注册失败|响应错误提示| |注册成功|重定向到首页|

3. 用户注册接口定义

1.注册视图

```python class RegisterView(View): """用户注册"""

def get(self, request):"""提供注册界面:param request: 请求对象:return: 注册界面"""return render(request, 'register.html')def post(self, request):"""实现用户注册:param request: 请求对象:return: 注册结果"""pass

```

2.总路由

python urlpatterns = [ # users url(r'^', include('users.urls', namespace='users')), ]

3.子路由

python urlpatterns = [ # 注册 url(r'^register/$', views.RegisterView.as_view(), name='register'), ]

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

这篇关于【Django开发】0到1美多商城项目md教程第2篇:展示用户注册页面,1. 创建用户模块子应用【附代码文档】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/823776

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in