其实Django有自带的后台管理系统,但是不利于我们的学习,所以这里只做简要介绍。
因此关于Django自带后台管理的部分若要实践操作建议新建分支,数据库做好备份或docker做好备份以便还原
Django自带的后台管理系统
数据库迁移
首先要执行相关数据库迁移
1 | $ python manage.py makemigrations |
会在数据库中新建相关表
添加超管
1 | $ python manage.py createsuperuser |
根据提示创建用户名,输入邮箱地址,输入密码并确认。
效果
使用第三方后台管理系统
注意!以下内容要求读者具有cookie与session的基础知识!
新建app并设置路由
我使用是hAdmin的后台管理模板,那就取名字叫hadmin吧
1 | $ python manage.py startapp hadmin |
在hadmin文件夹下边新建urls.py
1 | from django.conf.urls import url |
1 | from django.contrib import admin |
配置静态路径和模目录的操作不再赘述
建立数据库、表与Model
请按如下修改配置settings.py
1 | -LANGUAGE_CODE = 'en-US' |
配置数据库的操作请看前面的文章
这里我使用从数据库迁移到model文件
1 | DROP TABLE IF EXISTS `admin`; |
执行迁移
1 | python manage.py inspectdb > hadmin/models.py |
然后在数据库中添加一条数据:
1 | INSERT INTO `admin` ( `name`, `pwd`, `type` ) VALUES ( 'admin', 'admin', 1 ); |
为了检验,可以使用view来插入数据看看是否配置成功。
模板修改
Django操作数据库如果允许为空值,执行的SQL语句可能是全部字段,对应的NULL字段就是NULL,因此我们需要自己把默认值在models里加上。
from datetime import datetime
default=datetime.now()
model每次初始化,都会自动设置该字段的默认值为初始化时间。
default=datetime.now
model每次进行新增或修改操作,都会自动设置该字段的值为操作时间。设置后仍可以使用ORM手动修改该字段。
auto_now_add=True
默认值为False,若设置为True,model每次进行新增操作,都会自动设置该字段的值为操作时间。设置为True后无法使用ORM手动修改该字段,哪怕填充了字段的值也会被覆盖。
auto_now=True
默认值为False,若设置为True,model每次进行新增或修改操作,都会自动设置该字段的值为操作时间。设置为True后无法使用ORM手动修改该字段,哪怕填充了字段的值也会被覆盖。
————————————————
版权声明:本文为CSDN博主「旷古的寂寞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/kuanggudejimo/article/details/99291026
登陆系统
session存储位置
1 | # Django默认配置,保存到数据库 |
在文件末尾添加,这里为了省事,保存在缓存里
设置session与cookie
为了数据安全,如果登陆成功,我们需要把id和用户名保存在session中,cookie会自动添加一个key为sessionid,value为随机字符串的键值对。session和cookie默认保存两周。
我想让cookie关闭浏览器时清除,则需要配置一下settings.py,添加如下内容
1 | # SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认) |
实现:
1 | def login(request): |
添加登陆页面与主页
这个去随便找一个模板改改就好了,我的登陆逻辑如下(jQuery):
1 | $("#entry_btn").click(function () { |
设置url过滤
除了登陆相关,其他要拦截验证cookie,所以需要定义一个中间件
1 | from django.http import HttpResponseRedirect |
然后注册中间件
1 | MIDDLEWARE = [ |