python框架Django实战商城项目之用户模块创建
创建用户APP
整个项目会存在多个应用,需要存放在一个单独的文件包了,所以新建一个apps目录,管理所有子应用。
在apps包目录下穿件users应用
python ../../manage.py startapp users
这个时候呢,需要我们将新创建的应用注册到django里,可是这里我们修改了应用的管理目录,与默认的方式不同,如果还按照之前的方式注册APP肯定会报错,这个时候我们可以先查看一下django的导包路径,在dev文件中输入
print(sys.path()) # 输出包的所有搜索路径
['/Users/xxxx/workspace/xxxx/mall/immortal_mall',
'/Users/xxxx/workspace/xxxx/mall',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python38.zip',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python3.8',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python3.8/lib-dynload',
'/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8',
'/Users/xxxx/workspace/xxxx/mall/venv/lib/python3.8/site-packages',
'/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
第一个路径就是我们django项目的主目录,
也就是说他会搜索主目录下的所有包,那么就可以定义APP的路径为
meiduo_mall.apps.users
这个时候运行程序,是可以运行成功的。但是呢,这样定义注册APP的方式太麻烦了,如果应用多的话,每个都要这样写一遍,那不得烦死。所以必须得简化。怎么简化,直接往包的搜索路径中插入apps目录的绝对路径,那不django可以搜索到了么。
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
就这样完事儿,然后注册APP
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 'immortal_mall.apps.users',
'users'
]
返回注册页面
准备注册所使用的的模板,放入预先新建好的templates文件夹中
定义用户注册视图类:
class RegisterView(View):
"""用户注册视图类"""
def get(self, request):
'''获取注册页面'''
return render(request, 'register.html')
定义用户注册路由
# 总路由
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(('users.urls', 'users'), namespace='users'))
]
这里要划重点了,include函数的第一个参数是一个元祖,第一个参数没得说,就是指定了子应用的路由,第二个参数是app_name,这里必须制定app_name,如果不指定这个参数,写成include('users.urls', namespace='users')
是会报错的。
当然还有一种指定方式就是在子应用的urls文件中中指定app_name='users'
.
在users应用目录下新建一个urls.py文件,然后写入路由信息
urlpatterns = [
path('register/', views.RegisterView.as_view(), name='register') # name添加命名空间
]
启动应用,浏览器请求http://127.0.0.1:8989/register/,返回注册页面。
用户模型类
项目使用的是django自带的用户认证系统,先来了解一下都有哪些功能。
Django默认用户认证系统
django自带用户认证系统可以处理用户账号、组、权限以及基于cookie的用户会话,位于django.contrib.auth
包中。
auth包是django内置的一个APP,和admin一样,可以同时处理认证和授权,认证就是验证一个用户是不是系统的人,授权决定了一个认证的用户可以被允许做什么。
Django认证系统中提供了用户模型类User保存用户的数据,User对象是认证系统的核心:
class User(AbstractUser):
"""
Users within the Django authentication system are represented by this
model.
Username and password are required. Other fields are optional.
"""
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
Userl类没什么,看看父类AbstractUser
中的东西,里面定义用户的一些字段,里面包括user类一些必填的字段username、password,还有其他一些非必填的字段,is_active,is_staff等,关于用户认证的方法都AbstractUser
的父类AbstractBaseUser
中,
不过AbstractUser类
中持有了UserManager
的实例叫做objects
,这个类提供了创建用户的方法,比如:
user = User.objects.create_user(username, email, password, **extra_fields)
自定义用户模型类
这是用户注册信息表单,有一个手机号的字段,但是Django提供放入用户模型中是没有这个字段的,需要我们自己定义。
class User(AbstractUser):
"""自定义用户模型类"""
mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号")
class Meta:
db_table = 'tb_user' # 自定义表名
verbose_name = "用户" # 站点显示
verbose_name_plural = verbose_name # 复数显示
自定义的用户模型类需要继承AbstractUser
类,然后指定新添加的字段。添加完后运行项目,会报一个错:
这是django系统默认的的认证对象配置,我们使用了自定义的对象,但是这个对象没有被指定给系统,
所以要在自己的dev配置文件中重新指定;
AUTH_USER_MODEL = 'users.User'
然后创建迁移文件,执行迁移命令,完成表的创建。
✗ python manage.py makemigrations
python manage.py migrate
欢迎大家去 我的博客 瞅瞅,里面有更多关于测试实战的内容哦!!
python框架Django实战商城项目之用户模块创建的更多相关文章
- python框架Django实战商城项目之工程搭建
项目说明 该电商项目类似于京东商城,主要模块有验证.用户.第三方登录.首页广告.商品.购物车.订单.支付以及后台管理系统. 项目开发模式采用前后端不分离的模式,为了提高搜索引擎排名,页面整体刷新采用j ...
- django实战商城项目注册业务实现
设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...
- JavaWeb网上图书商城完整项目--21.用户模块各层相关类的创建
1.现在要为user用户模块创建类 用户模块功能包括:注册.激活.登录.退出.修改密码. User类对照着t_user表来写即可.我们要保证User类的属性名称与t_user表的列名称完全相同. 我们 ...
- python框架-Django创建项目
创建项目 django-admin startproject douban//创建project cd douban python manage.py startapp books//创建app项目 ...
- [Django实战] 第3篇 - 用户认证(初始配置)
当大家打开一个网站时,第一步做什么?大部分一定是先登录吧,所以我们就从用户认证开始. 打开用户认证 Django本身已经提供了用户认证模块,使用它可以大大简化用户认证模块的开发,默认情况下,用户认证模 ...
- python之Django实现商城从0到1
dailyfresh-B2Cdailyfresh mall based on B2C model 基于B2C的天天生鲜商城 项目托管地址:https://github.com/Ylisen/daily ...
- python框架Django简介与安装
Django简介 关注公众号"轻松学编程"了解更多. 发布于2005年,最负盛名且成熟的Python网络框架 最初用来制作在线新闻的Web站点 开源Web框架,遵守BSD协议 BS ...
- 068.Python框架Django之DRF视图集使用
一 视图集与路由的使用 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() ...
- 编程 - Python - 框架 - Django
一.Django简介 百度百科:一个开放源代码的Web框架,由Python语言编写...... 重点:一个大而全的框架,啥都替你考虑好了. 1. web框架介绍 具体介绍Django之前,必须先介绍W ...
随机推荐
- The sequence and de novo assembly of the giant panda genome.ppt
sequencing:使用二代测序原因:高通量,短序列 不用长序列原因: 1.算法错误率高 2.长序列测序将嵌合体基因错误积累.嵌合体基因:通过重组由来源与功能不同的基因序列剪接而形成的杂合基因 se ...
- [LC] 40. Combination Sum II
Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...
- Linux_新建用户
目录 1.新增用户 2.增加密码 新增用户:cn 进入root 输入新建命令 cn就是我们的新的用户名,也可以换成其他的 sudo useradd cn 接下来发现没有反应,是正常的,如图 查看是否新 ...
- 59)PHP,管理员表中所存在的项
用户ID 用户名 用户密码 用户权限(就是他的角色等级,比如是1级 2级, 三级等等) 上次登录的IP 上次登录的时间
- Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/features/5093566007214080
解决办法: 两个方案:1.注册处理函数时,用如下方式,明确声明为不是被动的window.addEventListener('touchmove', func, { passive: false }) ...
- LeetCode No.82,83,84
No.82 DeleteDuplicates 删除排序链表中的重复元素 II 题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 输入: 1->2 ...
- windows 不能在本地计算机启动apache2。有关更多信息,查阅系统事件日志。如果这是非Microsoft服务,请与服务厂商联系,并参考特定服务错误代码1
今天使用apache的时候又无法启动了,之前也遇到过,这次重点说这一次的情况,其他情况可以查看博主apache相关的其他博文:网上关于apache服务端的设置的很多,但是都不适合我的情况: 一般使用a ...
- Scarpy框架安装教程
在一切之前,建议升级pip,如果版本太低,安装会失败 升级pip命令: python -m pip install --upgrade pip 如果上面的命令不能用,用下面这个 easy_instal ...
- 第十届javaB(5)
试题 E: 迷宫 本题总分:15 分[问题描述] 下图给出了一个迷宫的平面图,其中标记为 1 的为障碍,标记为 0 的为可 以通行的地方.010000 000100 001001 110000迷宫的入 ...
- 【XP系统下载U盘装系统】用电脑店超级U盘装XP系统详细图文教程
现在U盘装系统已经越来越流行了,不仅方便而且简单,由于U盘启动盘用的制作工具不同,其中比较流行的有老毛桃.电脑店.大白菜.一键U盘装系统等等,因此安装过程中也有不尽相同的,今天就和大家分享下利用电脑店 ...