1. 创建项目
- 在虚拟环境中创建项目 loginRregister
- 创建app
python manage.py startapp login
- 添加app并设置时区和语言:loginRegister/settings.py
INSTALLED_APPS = [
'login',
]
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
- 数据库表的生成
python manage.py migrate # 将迁移脚本的内容写入数据库并创建数据库表
- 创建后台登录的超级用户:
python manage.py createsuperuser
- 启动服务器
python manage.py runserver 9999
- 浏览器访问后台:
http://localhost:9999/admin/
2. 数据库配置
创建数据库模型: login/models.py
from django.db import models
# 表:SiteUser
class SiteUser(models.Model):
gender_choice = (
(0, "未知"), (1, "男"), (2, "女"),
)
name = models.CharField(max_length=128, unique=True, verbose_name="用户名")
password = models.CharField(max_length=256, verbose_name="密码")
email = models.EmailField(unique=True, verbose_name="电子邮箱")
gender = models.IntegerField(choices=gender_choice, default=0, verbose_name="性别")
# auto_now_add=True时为添加时的时间,更新对象时不会有变动。
# auto_now=True无论是你添加还是修改对象,时间为你添加或者修改的时间。
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
modify_time = models.DateTimeField(auto_now=True, verbose_name="最后一次修改时间")
last_login_time = models.DateTimeField(null=True, blank=True, verbose_name="最后一次登陆时间")
has_confirmed = models.BooleanField(default=False, verbose_name="是否邮箱验证")
def __str__(self):
return self.name
class Meta:
ordering = ['create_time']
verbose_name = "网站用户管理"
verbose_name_plural = verbose_name
# 表:认证
class ConfirmString(models.Model):
code = models.CharField(max_length=256, verbose_name="确认码")
user = models.OneToOneField('SiteUser', on_delete=models.CASCADE)
create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
def __str__(self):
return self.user.name + ":" + self.code
class Meta:
ordering = ["-create_time"]
verbose_name = "确认码"
verbose_name_plural = "确认码"
激活数据库模型: 生成数据库表,添加到主文件:loginRegister/settings
INSTALLED_APPS = [
#旧的不变,添加新的程序:
'login', # 登陆的app
'captcha', # 验证码
]
生成迁移脚本并写入数据库:
python manage.py makemigrations
python manage.py migrate
刷新数据库:
进入交互式:
pip install ipython
python manage.py shell
添加信息:
from login.models import SiteUser
user1=SiteUser(name="user1",password="user1",email="user1@qq.com")
user1.save()
3. 后台管理
编辑后台表单: login/admin.py
from django.contrib import admin
from login.models import SiteUser, ConfirmString
# 后台管理设置的信息
class SiteUserAdmin(admin.ModelAdmin):
list_display = ['name', 'gender', 'email']
list_display_links = ['name']
list_filter = ['gender', 'create_time']
list_per_page = 10
# 关联人员及确认码等数据库表的信息到后台
admin.site.register(SiteUser, SiteUserAdmin)
admin.site.register(ConfirmString)
测试访问: http://localhost:9999/admin/
4. 添加邮件发送配置
添加到主配置文件:loginRegister/settings
EMAIL_HOST='smtp.163.com' # smtp服务器
EMAIL_PORT=25 # 默认端口
EMAIL_HOST_USER='XXXXXX@163.com' # 发送邮箱的地址
EMAIL_HOST_PASSWORD='XXXXXX' # 获取的授权码
EMAIL_USE_SSL=False # 不开启SSL
CONFIRM_DAYS=3 # 注册期的有效天数
测试:
1.进入交互式
python manage.py shell
2.发送邮件
from django.core.mail import send_mail
from loginRegister.settings import EMAIL_HOST_USER
send_mail( "测试sdsnz", "sdsnzy", EMAIL_HOST_USER, ['接收邮件的邮箱1', '接收邮箱2'] )