django 后台 admin
Posted zhuodong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 后台 admin相关的知识,希望对你有一定的参考价值。
知易行难,知易行难。前思后想一完言,后觉不如不言。南无阿弥陀佛。
主要功能
功能1:提供数据库管理功能
基于admin模块,可以实现类似数据库客户端的功能,对数据进行增删改查
功能2:二次开发
基于该模块的数据管理功能,可以二次定制一些实用的功能。
步骤1:在settings.py中,INSTALLED_APPS中,加入django.contrib.admin
1
2
3
4
5
6
7
|
INSTALLED_APPS = [ ‘django.contrib.admin‘ , ‘django.contrib.auth‘ , #admin依赖 ‘django.contrib.contenttypes‘ , #admin依赖 ‘django.contrib.sessions‘ , #admin依赖 ...... ] |
步骤2:urls.py创建admin路由
1
2
3
4
5
6
|
from django.contrib import admin urlpatterns = [ url(r ‘^admin/‘ , admin.site.urls), .... ] |
步骤3:在settings.py配置文件中,中间件注册
1
2
3
4
5
6
|
MIDDLEWARE = [ ‘django.contrib.sessions.middleware.SessionMiddleware‘ , ‘django.middleware.common.CommonMiddleware‘ , ‘django.contrib.auth.middleware.AuthenticationMiddleware‘ , .... ] |
步骤4:创建admin管理用户
1
|
python manage.py createsuperuser |
步骤5:在app 的models.py文件中创建表信息,即表类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
from django.db import models class Gender(models.Model): name = models.CharField(max_length = 32 ) class userinfo(models.Model): nid = models.AutoField(primary_key = True ) name = models.CharField(max_length = 30 , verbose_name = ‘用户名‘ ,editable = False ) email = models.EmailField(db_index = True ) memo = models.TextField() img = models.ImageField(upload_to = ‘upload‘ ) user_type = models.ForeignKey( "UserType" , null = True , blank = True ) gender_choices = ( ( 0 , "男" ), ( 1 , "女" ), ) gender = models.IntegerField(choices = gender_choices,default = 1 ) class UserType(models.Model): name = models.CharField(max_length = 32 ) def __str__( self ): return self .name |
步骤6:在admin.py中注册表
1
2
3
4
5
6
|
from django.contrib import admin # Register your models here. from app01 import models admin.site.register(models.userinfo) admin.site.register(models.UserType) |
步骤7:生成表结构
1
|
python manage.py makemigrations && python manage.py migrate |
注意:在数据库表结构发生变动时,再次执行python manage.py makemigrations就会报错,这是因为此时表中可能已经有数据,貌然变动表结构会有影响,此时的解决方法有两种,一种是,设置新增字段的default=‘xxx‘某个值, 但是这种通用性不是很好。 另外一种是,设置该字段null=True。即允许为空即可
解决方法: 在外部键的后面加上 on_delete=models.CASCADE
以上是关于django 后台 admin的主要内容,如果未能解决你的问题,请参考以下文章