admin的使用
admin的用处
随着项目的扩展,我们在项目中的表也越来越多,这时候在一条一条的录入数据就会很麻烦,怎么办? 这时候就是 admin 的用武之地了,它可以实现数据可视化的管理数据库中的表。
命令行下创建超级用户
首选创建一个新用户,用来登录Django管理网站,进入manage.py目录下,使用如下命令来进行创建:
>>python manage.py createsuperuser
接下来输入用户名称:
>>Username(leave bkank to use 'administrator'): root
然后是输入邮箱(QQemail等都可以):
>>Email address:(输入你的邮箱账号)
输入密码(输入密码时不会显示出来,并且长度必须超过八位才行):
>>Password:
>>Password(again):
当两次密码输入相同且超过八位的时候,就会提示创建超级用户成功:
>>Superuser created successfully.
再次运行你的服务,输入账号和密码就可以成功登陆了:
>>python manage.py runserver
创建超级用户其实就是一个参数的配置
# 在 auth模块中 # 在userinfo表中 改为 1
# -is_staff : 用户是否拥有网站的管理权限. # -is_active : 是否允许用户登录, 设置为 False,可以在不删除用户的前提下禁止用户登录。
admin的用法
1、我们需要现在settings中加入
#告诉django 我们要用自己的userinfo表了
AUTH_USER_MODEL = 'app01.UserInfo'
app01 为App名
Userinfo 为models下的userinfo表
2、在admin.py中注册表,才能在admin后台看到
from app01 import models #注册表语法: # admin.site.register ( models.xxxx ) # xxxx 是models中创建的表 admin.site.register(models.UserInfo) admin.site.register(models.Blog) admin.site.register(models.Tag) admin.site.register(models.Category) admin.site.register(models.Article) admin.site.register(models.UpAndDown) admin.site.register(models.Comment)
4、数据库表迁移:在Terminal 下:
#执行以下 两条命令 顺序不能错
python manage.py makemigrations
python manage.py migrate
#完成,你可以按照最上面的方式创建一个超级用户登录了
人性化设置
5、在此你会发现所有表都是英文显示,怎么改成中文呢?
详情链接:点我
#把这个类加到你models表中就行了, class Meta: # admin中显示的表名称 verbose_name='哈哈' #这些这一个会显示成 " 哈哈s" # verbose_name去掉s 这样就是我们想要的 "哈哈"显示效果了 verbose_name_plural=verbose_name
4、当你进入表中添加数据的时候会发现字段名也全是英文,那可以改成中文吗? 这个也是可以改的
示例:
models中的Tag表中
class Tag(models.Model): nid = models.AutoField(primary_key=True,) #只需在name字段里加入 verbose_name= "你想要的中文名称" name = models.CharField(max_length=32,verbose_name="名称") blog = models.ForeignKey(to='Blog', to_field='nid',verbose_name="与博客表的关系")
5、如果你想关联表的关联字段显示 "名称" 而非 一个object对象,那么在被关联表中设置__str__如下示例。
示例:
# 关联表 class Category(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32) blog = models.ForeignKey(to='Blog', to_field='nid') #显示Blog中的site_name字段名,而不是Blog对象
#被关联表
class Blog(models.Model): nid = models.AutoField(primary_key=True) site_name = models.CharField(max_length=32) site_title = models.CharField(max_length=64) # 存css文件的路径 theme = models.CharField(max_length=32)
def __str__(self): #加入这个方法:
return self.site_name #返回值自身的 site_name 字段, 对方想显示出这个字段
注意: null=True 只是数据库层面 允许字段为空,必须加上blank = Ture,不然会抛异常
# blank = True 解除admin对表为空的限制
telephone = models.BigIntegerField(null=True,blank=True)