Django可重用注册系统项目----(3) (创建项目、数据库、后台管理界面、测试邮件发送服务)


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

添加信息:

扫描二维码关注公众号,回复: 12898721 查看本文章
from login.models import SiteUser
user1=SiteUser(name="user1",password="user1",email="[email protected]")
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='[email protected]' # 发送邮箱的地址
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'] )

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46069582/article/details/114434213
今日推荐