Django基础(3:项目之Admin)

上篇配置了数据库、编写完 Models 后,我们就不需要再关心数据库了,那我们如果想要修改数据要怎么做呢?

方法还是很多的,比如使用 Django 提供的数据库 API(API常用操作:https://www.cnblogs.com/zhming26/p/6265652.html)不过最小白的还是在管理员页面直接对数据进行增删改查,这篇就来介绍管理员 Admin

1. 创建管理员账号

    命令:python manage.py createsuperuser

    然后按照提示输入管理员的用户名,邮件地址,密码(注意:密码不予显示,千万别怀疑自己键盘坏了)

    

2. 在 polls/admin.py 注册需要被管理的数据模型

    打开 admin.py 并录入admin.site.register(Question) :

from django.contrib import admin

# Register your models here.


# 导入Question模型
from .models import Question, Choice


# 注册Question,这样就可以被管理
admin.site.register(Question)

   运行命令:python manage.py runserver 启动服务器,这时候就可以在浏览器通过 url: http://127.0.0.1:8000/admin/ 访问我们的服务器了

   

输入用户名和密码登录后

 之后我们就可以点击增加添加问题了

我们就成功地通过管理员页面操作数据了

 3. 优化 admin 站点

  如果只想要最基本的管理的话,用代码 admin.site.register(Question) 注册后即可,但我们希望它按照我们需要的格式显示和具有一些过滤查找功能,所以我们需要定义一个类来定制我们需要的格式和功能,难点在于要知道各种实现功能的代码写法,这里给出官方参考文档(https://docs.djangoproject.com/en/1.10/ref/contrib/admin/

    我们将对 question 的页面实现:

               格式按【问题文本,发布日期 】显示

               筛选器功能

               关键字搜索查找功能

               添加 Choice 功能

    polls/admin.py

from django.contrib import admin

# Register your models here.


# 导入Question模型
from .models import Question, Choice


# # 注册Question,这样就可以被管理
# admin.site.register(Question)


# 创建自定义的Choice管理类
# 但必须继承自admin的某个类,这样才能使用它的功能
class ChioceInline(admin.TabularInline):
    # 关联Choice模型
    model = Choice
    # 定义可添加数目
    extra = 3


# 创建自定义的Question管理类
class QuestionAdmin(admin.ModelAdmin):
    # 定义显示格式:问题文本,发布日期
    list_display = ('question_text', 'pub_date')
    # 定义筛选器,按发布日期筛选
    list_filter = ['pub_date']
    # 定义查找器,按问题文本查找
    search_fields = ['question_text']
    # 关联ChoiceInline对象
    inlines = [ChioceInline]

# 注册Question,按照QuestionAdmin定义的内容
admin.site.register(Question, QuestionAdmin)

之后的页面就变成了下面这个样子:

 实现了搜索框(红色)、数据按照预设格式显示(紫色)、有过滤器(绿色)

其中过滤器检测到 pub_date 是 models.DateTimeField 类型,就自动生成默认的时间过滤条件,是不是很省事!

点击 What's up? 页面如下

这就实现了对 Choice 的关联,添加数量默认是我们 polls/admin.py 里面设置的 extre 的值,我们为 What's up? 问题添加两个 Choice 并保存,这样就成功为为 What's up? 问题添加了 Not much 和 The sky 两个 Choice

至此,我们就成功得利用 Admin 控制数据库并且实现一些简单的功能

猜你喜欢

转载自blog.csdn.net/Jeeson_Z/article/details/82714066
今日推荐