首先,老师给了一些静态文件,我们可以在pycharm里直接复制进项目根目录下。此时如果js文件报错的话,可以进入设置-语言&框架-Javascript里面修改。
把静态文件放入到静态文件夹里。
然后就可以把原来问文件夹给删掉了。
按着顺序拉取静态文件,就会自动补全路径。
然后再写视图函数,配置路由,就可以看到这些文件了
随后在templates下创建base文件夹,把主页面复制进作为其他网页继承的主模板
随后再挖好坑
主体里面分为其他部分,也可以挖坑,坑里面可以有内容
首先开始写注册功能
在主页面中,点击注册,并不能实现跳转,先写跳转注册页面。
原本的注册选项a标签是这样的
在django里面这样写并不能实现跳转,需要这样改
因为href是直接把url拼接的,而所写的url里面,注册页面的url是‘127.0.0.1:8000/register/,在原页面,网页url是127.0.0.1:8000,加上’/register/'就是注册页面的网址了。
还有另外一种写法,
{% url ‘users:register’ %}通过找到app_name,再找app_name下name为register的路由,app_name和name的命名任意。如果没有给路由取名,如无:name = “register”,会报错,提示找不到。
这种方式叫定义命名空间。
注册功能的实现:
一、用户表字段分析
- 添加用户手机号字段
- 添加邮箱状态字段
二、用户模式设计
代码如下所示:
在users的APP下的models.py文件写入
Django提供了django.contrib.auth.models.AbstractUser
用户抽象模型类允许我们继承,扩展字段来使用Django认证系统的用户模型类。
from django.db import models
from django.contrib.auth.models import AbstractUser, UserManager as _UserManager
class UserManager(_UserManager):
"""
define user manager for modifing 'no need email'
when 'python manager.py createsuperuser '
"""
def create_superuser(self, username, password, email=None, **extra_fields):
super(UserManager, self).create_superuser(username=username,
password=password, email=email, **extra_fields)
class Users(AbstractUser):
"""
add mobile、email_active fields to Django users models.
"""
objects = UserManager()
# A list of the field names that will be prompted for
# when creating a user via the createsuperuser management command.
REQUIRED_FIELDS = ['mobile']
# help_text在api接口文档中会用到
# verbose_name在admin站点中会用到
mobile = models.CharField(max_length=11, unique=True, verbose_name="手机号", help_text='手机号',
error_messages={'unique': "此手机号已注册"} # 指定报错的中文信息
)
email_active = models.BooleanField(default=False, verbose_name='邮箱验证状态')
class Meta:
db_table = "tb_users" # 指明数据库表名
verbose_name = "用户" # 在admin站点中显示的名称
verbose_name_plural = verbose_name # 显示的复数名称
def __str__(self): # 打印对象时调用
return self.username
自定义的用户模型类还不能直接被Django的认证系统所识别,需要在配置文件中告知Django认证系统使用我们自定义的模型类。
在配置文件中进行设置
在settings.py文件中添加如下配置:
阅读源代码:'django.conf.global_settings'
AUTH_USER_MODEL = 'auth.User'#这块是原始django配置的模型类
AUTH_USER_MODEL = 'app应用名.模型类名'
AUTH_USER_MODEL 参数的设置以点.来分隔,表示应用名.模型类名。
# 自定义用户模型
AUTH_USER_MODEL = 'user.Users'
注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。
三 执行迁移
python manage.py makemigrations
python manage.py migrate
这时,输入迁移命令后,会发现出现报错。
在dev.py中加入下行代码,查看下路径
会发现路径中第二次比第一次多了两条路径,其余都与第一一样。
然后再执行生成迁移