1、首先要将sqlite的数据同步到mysql中,方便管理
修改setting.py,如下:
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'django', # 数据库名称
'HOST': '192.168.111.66', # 数据库地址,本机 ip 地址 127.0.0.1
'PORT': 3306, # 端口
'USER': 'root', # 数据库用户名
'PASSWORD': '######', # 数据库密码
}
}
然后执行
python manage.py makemigration
python manage.py migrate
#添加一个超级用户
python manage.py createsuperuser
这里如果出错,请添加__init__.py内容
import pymysql
pymysql.install_as_MySQLdb()
2、在路由中添加管理后台
path('', views.index),
path('admin/', admin.site.urls),
3、运行项目,进入后台http://ip/admin/,使用超级用户登录,在这里添加需要的用户
4、修改mysql数据库,添加需要的权限模块到django_content_type与权限到auth_permission,如下图所示:
django_content_type:
auth_permission:
5、给views.py中的控制器添加限制装饰器
from django.contrib.auth.decorators import login_required,permission_required
@login_required(login_url="/login/") #判断ruquest.user中是否有对象,没有跳转到/login/
@permission_required("views.index",login_url="/login/",raise_exception=True)
def index(request:HttpRequest):
context={}
context["ul"]=["后台管理","用户管理","用户列表"]
context["body"]="Hello World"
context["title"]="后台管理系统"
context["user"]=request.user.last_name+request.user.first_name
return render(request,"main.html",context)
@login_required(login_url="/login/")
@permission_required("views.about",login_url="/login/",raise_exception=True)
def about(request):
data=[
{"name": "test", "desc": "test"},
{"name": "bk_task_list", "desc": "后台任务管理"},
]
return render(request,"about.html",{"list":data})
在模版中使用:模版中使用全局变量perms存储当前用户的所有权限
{% if perms.应用名.权限标识 %}
<!-- 这里是有权限才显示的内容 -->
{% endif %}
6、配置路由,这一步不用再说了。
7、在/admin/后台管理里,给用户或者组添加权限即可。
8、代码添加权限:
#创建权限的第二种方法通过实例模型创建权限
from django.contrib.auth.models import Permission,ContentType #引入models类
def add_permission(request):
content_type = ContentType.objects.get_for_model(views)
'''
codename 权限的名称
name 权限的描述
content_tpye 指定那个表的权限
'''
permission = Permission.objects.create(codename='black_article',name='拉黑文章',content_type=content_type)
return HttpResponse('权限创建成功!')