17.Django_使用admin站点管理

有时候我们需要后台添加数据可以使用到admin站点管理:
Django能够根据定义的模型类自动地生成管理页面

1. 创建超级管理员

python manage.py createsuperuser

根据提示输入:
创建用户名、密码、邮箱

运行项目,此时报错,

Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。

百度后发现是端口被占用,需要杀掉进程,

cmd

netstat -ano|findstr 8000    找出占用8000端口的应用 
tasklist |findstr 11568   查询出占用端口的应用
taskkill /pid 11568 /F  根据pid杀死进程   

但是发现占用较多,每次都要杀掉进程感觉比较麻烦,所以就决定修改django默认的占用端口号;
直接在pycharm中进行修改:
在这里插入图片描述
修改端口后再运行,运行成功;’
在这里插入图片描述

2. 打开浏览器登录,

在地址栏中输入如下地址后回车http://127.0.0.1:8887/admin/
输入前面创建的用户名、密码完成登录
在这里插入图片描述
登录成功后界面如下:
在这里插入图片描述
但是并没有我们自己应用模型的入口,接下来进行第三步操作

3. 注册模型类

在自己应用中的admin.py文件中注册
打开projects/admin.py文件,编写如下代码:

from django.contrib import admin
from .models import Projects
# 直接使用自带的站点
admin.site.register(Projects)

刷新后如下:
在这里插入图片描述
点击项目22后进入:
在这里插入图片描述
此刻发现名称项目22和项目11是从哪里来的原来是定义models中定义的:
再看一下:

verbose_name="项目11"
verbose_name_plural="项目22"
from django.db import models

# Create your models here.
class Projects(models.Model):
    # 创建Projects模型类
    name = models.CharField(verbose_name="项目名称",max_length=200,unique=True,help_text="项目名称")
    leader = models.CharField(verbose_name="负责人",max_length=50,help_text="负责人")
    tester = models.CharField(verbose_name="测试人员",max_length=50,help_text="测试人员")
    programer = models.CharField(verbose_name="开发人员",max_length=50,help_text="开发人员")
    publish_app=models.CharField(verbose_name="发布应用",max_length=50,help_text="发布应用")
    desc = models.TextField(verbose_name="简要描述",max_length=200,help_text="简要描述")

   #设定数据库名称等信息
    class Meta:
        db_table="tb_projects"
        verbose_name="项目11"
        verbose_name_plural="项目22"

4.Admin站点的展示效果可以通过自定义ModelAdmin类来进行控制、

projects/admin.py中定义:


from django.contrib import admin
from .models import Projects
class ProjectsAdmin(admin.ModelAdmin):
    #指定在修改、新增中显示的字段,详情页控制
    fields = ("name","leader","tester")
    #指定展示列字段
    list_display = ("id","name","leader","tester")
# # # 直接使用自带的站点
admin.site.register(Projects,ProjectsAdmin)

注意注册时需要将ProjectsAdmin类作为参数传进去;
再次运行:
展示和详情页
在这里插入图片描述
在这里插入图片描述
除了上面的还有以下控制字段:

   # 控制列表展示数量
   list_per_page = 2  
   # 控制展示字段,字段显示顺序和列表中顺序相同
    list_display = ['id','btitle','bread','date']

    # 指定搜索字段
    search_fields = ['btitle']

    # 控制执行按钮在上面或者在下面
    actions_on_bottom = True
    actions_on_top = False

    # 设置过滤条件
    list_filter = ['bread']


运行后发现每次编辑都没有代入名称:
在这里插入图片描述
需要修改models.py中:

from django.db import models

# Create your models here.
class Projects(models.Model):
    # 创建Projects模型类
    name = models.CharField(verbose_name="项目名称",max_length=200,unique=True,help_text="项目名称")
    leader = models.CharField(verbose_name="负责人",max_length=50,help_text="负责人")
    tester = models.CharField(verbose_name="测试人员",max_length=50,help_text="测试人员")
    programer = models.CharField(verbose_name="开发人员",max_length=50,help_text="开发人员")
    publish_app=models.CharField(verbose_name="发布应用",max_length=50,help_text="发布应用")
    desc = models.TextField(verbose_name="简要描述",max_length=200,help_text="简要描述")

   #设定数据库名称等信息
    class Meta:
        db_table="tb_projects"
        verbose_name="项目"
        verbose_name_plural="项目"
        
        #带入名称
    def __str__(self):
        return self.name
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章