“User models设计”的版本间的差异
来自CloudWiki
(→替换系统用户) |
|||
(未显示同一用户的4个中间版本) | |||
第1行: | 第1行: | ||
==项目表的设计== | ==项目表的设计== | ||
+ | ===构想需要的表=== | ||
*users | *users | ||
*goods | *goods | ||
第5行: | 第6行: | ||
*user_operation | *user_operation | ||
+ | ===创建相关应用=== | ||
[root@localhost mxshop]# python3 manage.py startapp goods | [root@localhost mxshop]# python3 manage.py startapp goods | ||
第11行: | 第13行: | ||
[root@localhost mxshop]# python3 manage.py startapp user_operation | [root@localhost mxshop]# python3 manage.py startapp user_operation | ||
+ | 移动到apps目录下,方便管理: | ||
+ | |||
+ | [root@localhost mxshop]# mv goods apps/ | ||
+ | |||
+ | [root@localhost mxshop]# mv trade apps/ | ||
+ | |||
+ | [root@localhost mxshop]# mv user_operation apps/ | ||
+ | |||
+ | ===注册相关应用=== | ||
+ | 在settings.py 中注册相关应用: | ||
+ | |||
+ | <nowiki> | ||
+ | |||
+ | INSTALLED_APPS = [ | ||
+ | 'django.contrib.admin', | ||
+ | 'django.contrib.auth', | ||
+ | 'django.contrib.contenttypes', | ||
+ | 'django.contrib.sessions', | ||
+ | 'django.contrib.messages', | ||
+ | 'django.contrib.staticfiles', | ||
+ | 'users', | ||
+ | 'goods', | ||
+ | 'trade', | ||
+ | 'user_operation', | ||
+ | ] | ||
+ | </nowiki> | ||
==User models设计== | ==User models设计== | ||
− | apps/ | + | apps/users/models.py: |
===设计UserProfile表=== | ===设计UserProfile表=== | ||
第57行: | 第85行: | ||
def __str__(self): | def __str__(self): | ||
return self.code</nowiki> | return self.code</nowiki> | ||
+ | |||
+ | ==替换系统用户== | ||
+ | 在settings.py中添加: | ||
+ | |||
+ | <nowiki>AUTH_USER_MODEL = 'users.UserProfile' | ||
+ | </nowiki> | ||
+ | |||
+ | 这样认证的用户模型就变成了我们自己写的,替换掉系统中原来默认的。 | ||
+ | |||
==模板迁移及写入== | ==模板迁移及写入== | ||
第66行: | 第103行: | ||
− | == | + | ==验证== |
− | + | 在mysql中输入命令验证: | |
+ | |||
+ | MariaDB [(none)]> show databases; | ||
+ | |||
+ | <nowiki>+--------------------+ | ||
+ | | Database | | ||
+ | +--------------------+ | ||
+ | | information_schema | | ||
+ | | mxshop | | ||
+ | | mysql | | ||
+ | | performance_schema | | ||
+ | +--------------------+ | ||
+ | 4 rows in set (0.01 sec)</nowiki> | ||
+ | |||
+ | MariaDB [(none)]> use mxshop; | ||
+ | |||
+ | <nowiki>Reading table information for completion of table and column names | ||
+ | You can turn off this feature to get a quicker startup with -A | ||
+ | |||
+ | Database changed</nowiki> | ||
+ | |||
+ | MariaDB [mxshop]> show tables; | ||
+ | |||
+ | <nowiki>+------------------------------------+ | ||
+ | | Tables_in_mxshop | | ||
+ | +------------------------------------+ | ||
+ | | auth_group | | ||
+ | | auth_group_permissions | | ||
+ | | auth_permission | | ||
+ | | django_admin_log | | ||
+ | | django_content_type | | ||
+ | | django_migrations | | ||
+ | | django_session | | ||
+ | | users_userprofile | | ||
+ | | users_userprofile_groups | | ||
+ | | users_userprofile_user_permissions | | ||
+ | | users_verifycode | | ||
+ | +------------------------------------+</nowiki> | ||
+ | |||
+ | MariaDB [mxshop]> desc users_userprofile; | ||
+ | |||
+ | <nowiki>+--------------+--------------+------+-----+---------+----------------+ | ||
+ | | Field | Type | Null | Key | Default | Extra | | ||
+ | +--------------+--------------+------+-----+---------+----------------+ | ||
+ | | id | int(11) | NO | PRI | NULL | auto_increment | | ||
+ | | password | varchar(128) | NO | | NULL | | | ||
+ | | last_login | datetime | YES | | NULL | | | ||
+ | | is_superuser | tinyint(1) | NO | | NULL | | | ||
+ | | username | varchar(150) | NO | UNI | NULL | | | ||
+ | | first_name | varchar(30) | NO | | NULL | | | ||
+ | | last_name | varchar(30) | NO | | NULL | | | ||
+ | | is_staff | tinyint(1) | NO | | NULL | | | ||
+ | | is_active | tinyint(1) | NO | | NULL | | | ||
+ | | date_joined | datetime | NO | | NULL | | | ||
+ | | name | varchar(30) | YES | | NULL | | | ||
+ | | birthday | date | YES | | NULL | | | ||
+ | | gender | varchar(6) | NO | | NULL | | | ||
+ | | mobile | varchar(11) | YES | | NULL | | | ||
+ | | email | varchar(100) | YES | | NULL | | | ||
+ | +--------------+--------------+------+-----+---------+----------------+ | ||
+ | 15 rows in set (0.01 sec)</nowiki> | ||
+ | |||
+ | MariaDB [mxshop]> desc users_verifycode; | ||
− | <nowiki> | + | <nowiki>+----------+-------------+------+-----+---------+----------------+ |
+ | | Field | Type | Null | Key | Default | Extra | | ||
+ | +----------+-------------+------+-----+---------+----------------+ | ||
+ | | id | int(11) | NO | PRI | NULL | auto_increment | | ||
+ | | code | varchar(10) | NO | | NULL | | | ||
+ | | mobile | varchar(11) | NO | | NULL | | | ||
+ | | add_time | datetime | NO | | NULL | | | ||
+ | +----------+-------------+------+-----+---------+----------------+ | ||
</nowiki> | </nowiki> | ||
− | |||
− |
2020年9月5日 (六) 04:01的最新版本
目录
项目表的设计
构想需要的表
- users
- goods
- trade
- user_operation
创建相关应用
[root@localhost mxshop]# python3 manage.py startapp goods
[root@localhost mxshop]# python3 manage.py startapp trade
[root@localhost mxshop]# python3 manage.py startapp user_operation
移动到apps目录下,方便管理:
[root@localhost mxshop]# mv goods apps/
[root@localhost mxshop]# mv trade apps/
[root@localhost mxshop]# mv user_operation apps/
注册相关应用
在settings.py 中注册相关应用:
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'users', 'goods', 'trade', 'user_operation', ]
User models设计
apps/users/models.py:
设计UserProfile表
from datetime import datetime from django.db import models from django.contrib.auth.models import AbstractUser#导入系统用户 # Create your models here. class UserProfile(AbstractUser): """ 用户 """ name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名") birthday = models.DateField(null=True, blank=True, verbose_name="出生年月") gender = models.CharField(max_length=6, choices=(("male", u"男"), ("female", "女")), default="female", verbose_name="性别") mobile = models.CharField(null=True, blank=True, max_length=11, verbose_name="电话") email = models.EmailField(max_length=100, null=True, blank=True, verbose_name="邮箱") class Meta: verbose_name = "用户"#设置表的别名 verbose_name_plural = verbose_name def __str__(self): return self.username
设计验证码表
跟刚才同一文件下.
class VerifyCode(models.Model): """ 短信验证码 """ code = models.CharField(max_length=10, verbose_name="验证码") mobile = models.CharField(max_length=11, verbose_name="电话") add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")#这里不能写成datetime.now() class Meta: verbose_name = "短信验证码" verbose_name_plural = verbose_name def __str__(self): return self.code
替换系统用户
在settings.py中添加:
AUTH_USER_MODEL = 'users.UserProfile'
这样认证的用户模型就变成了我们自己写的,替换掉系统中原来默认的。
模板迁移及写入
python3 manage.py makemigrations
python3 manage.py sqlmigrate users 0001
python3 manage.py migrate
验证
在mysql中输入命令验证:
MariaDB [(none)]> show databases;
+--------------------+ | Database | +--------------------+ | information_schema | | mxshop | | mysql | | performance_schema | +--------------------+ 4 rows in set (0.01 sec)
MariaDB [(none)]> use mxshop;
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed
MariaDB [mxshop]> show tables;
+------------------------------------+ | Tables_in_mxshop | +------------------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | django_admin_log | | django_content_type | | django_migrations | | django_session | | users_userprofile | | users_userprofile_groups | | users_userprofile_user_permissions | | users_verifycode | +------------------------------------+
MariaDB [mxshop]> desc users_userprofile;
+--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | password | varchar(128) | NO | | NULL | | | last_login | datetime | YES | | NULL | | | is_superuser | tinyint(1) | NO | | NULL | | | username | varchar(150) | NO | UNI | NULL | | | first_name | varchar(30) | NO | | NULL | | | last_name | varchar(30) | NO | | NULL | | | is_staff | tinyint(1) | NO | | NULL | | | is_active | tinyint(1) | NO | | NULL | | | date_joined | datetime | NO | | NULL | | | name | varchar(30) | YES | | NULL | | | birthday | date | YES | | NULL | | | gender | varchar(6) | NO | | NULL | | | mobile | varchar(11) | YES | | NULL | | | email | varchar(100) | YES | | NULL | | +--------------+--------------+------+-----+---------+----------------+ 15 rows in set (0.01 sec)
MariaDB [mxshop]> desc users_verifycode;
+----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(10) | NO | | NULL | | | mobile | varchar(11) | NO | | NULL | | | add_time | datetime | NO | | NULL | | +----------+-------------+------+-----+---------+----------------+