django自带的admin后台管理,可以实现对数据库表的增删改查,用起来十分方便。其使用和配置主要分为三个步骤:

1,创建超级用户

需要创建超级用户来登陆admin后台系统,在命令行中输入 python manage.py createsuperuser

  

然后根据提示设置用户名和密码(邮箱可不设置,密码至少八位)

2, 注册model表

  在创建的app下的admin.py文件中,需要对创建的model表进行注册

  使用格式如下:

 from django.contrib import admin
import models # Register your models here.
class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish'] admin.site.register(models.Book,admin_class=BookConfig)
admin.site.register(models.Author)
admin.site.register(models.Publish)

  通过admin.site.register()注册后,后台就能显示相应的model表。另外,在Book表注册时设置了admin_class=BookConfig,可以对显示的字段进行自定义,详细设置见下面的ModelAdmin参数介绍

3, 登陆admin后台

  由于在全局的路由中配置了如下的admin后台url,在浏览器输入http://127.0.0.1:8008/admin/,利用设置的超级用户登陆即可。

    urlpatterns = [ url(r'^admin/', admin.site.urls), ]

  

  在settings.py文件中修改LANGUAGE_CODE = 'en-us',设置成LANGUAGE_CODE = 'zh-Hans',能够使界面变成中文(zh-Hans表示简体中文)

  若要显示的model表名为中文,需要在model的meta中定义:verbose_name_plural = '书籍'  (verbose_name定义后django会自动加上s)

  若要models的表的字段显示为中文,需要实现__str__(),并在每个字段中定义verbose_name,设置代码如下

  
 class Book(models.Model):
title = models.CharField(max_length=64,verbose_name='标题')
price = models.DecimalField(max_digits=5,decimal_places=2,default=0)
author = models.ManyToManyField(to='Author')
publish = models.ForeignKey(to='Publish')
def __str__(self):
return self.title
class Meta:
verbose_name_plural = '书籍'
#verbose_name = '书籍' #这样设置后会显示复数形式: 书籍s

models.py


  另外在添加数据时,若添加中文报错:'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) , 需要在manage.py 文件中代码前面加入 reload(sys)和sys.setdefaultencoding('utf8'),如下:

#coding:utf-8
#!/usr/bin/env python
import os
import sys
reload(sys)
sys.setdefaultencoding('utf8')

4, ModelAdmin参数介绍

 在注册admin时,通过继承ModelAdmin,设置相应的字段能够自定义model表在admin后台的显式格式,ModelAdmin源代码中定义的字段如下:
class ModelAdmin(BaseModelAdmin):
"Encapsulates all admin options and functionality for a given model." list_display = ('__str__',)
list_display_links = ()
list_filter = ()
list_select_related = False
list_per_page = 100
list_max_show_all = 200
list_editable = ()
search_fields = ()
date_hierarchy = None
save_as = False
save_as_continue = True
save_on_top = False
paginator = Paginator
preserve_filters = True
inlines = [] # Custom templates (designed to be over-ridden in subclasses)
add_form_template = None
change_form_template = None
change_list_template = None
delete_confirmation_template = None
delete_selected_confirmation_template = None
object_history_template = None # Actions
actions = []
action_form = helpers.ActionForm
actions_on_top = True
actions_on_bottom = False
actions_selection_counter = True
checks_class = ModelAdminChecks

常用参数介绍:(官方文档:https://docs.djangoproject.com/en/2.1/ref/contrib/admin/)

1,list_display = ('__str__',): 设置model表需要显示的字段,未设置时只显示__str__()的返回值。如下面设置了title, price,publish三个字段

class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish']
admin.site.register(models.Book,admin_class=BookConfig) list_display字段除了支持model字段外,还可以加入自定义的函数,如下面代码所示,增加了一列:编辑列,实现点击能进入编辑页面。 (list_display支持三种方式定义的函数,见官方文档)
def edit(model_obj):
return mark_safe('<a href="%s/change/">编辑</a>' % model_obj.pk) class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish',edit]

 

2,list_display_links = (),设置model表具有超链接的字段(默认为__str__()的返回字段),设置后点击能进入编辑页面。如下面的设置,price字段也变成超链接

class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish']
list_display_links = ['title','price']

3,list_filter = (),设置过滤地字段,设置后后台管理右侧会出现过滤器(一般都设置为外键或多对多字段),点击能显示该类别下的数据。如下面设置后,点击右边的文艺出版社,能过滤出文艺出版社出版的所有书籍,如左边所示。

class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish']
list_display_links = ['title','price']
list_filter = ('author','publish')

4,search_fields = (),设置搜索时进行匹配的字段(不能设置为外键或多对多字段),设置后上面会出现搜索框,搜索时会将定义的字段和输入内容进行匹配,筛选出复合条件的数据。如下面的设置为标题字段,通过搜索浪漫能匹配出标题中含浪漫的数据

class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish']
list_display_links = ['title','price']
list_filter = ('author','publish')
search_fields = ('title',)
 

5,actions = [], 设置批处理函数,需要自己定义和实现函数,设置后在action下拉框中会出现设置的相应批处理函数,点击后能进行批处理。下面的设置定义了一个批量修改价格的方法,如下图点击action中的批量修改价格后能将选中的数据的价格修改成24

官方文档:https://docs.djangoproject.com/en/2.1/ref/contrib/admin/actions/

class BookConfig(admin.ModelAdmin):
list_display = ['title','price','publish']
list_display_links = ['title','price']
list_filter = ('author','publish')
search_fields = ('title',) def batch_update_price(self,request,queryset):
queryset.update(price = 24)
# for obj in queryset:
# do_something_with(obj)
batch_update_price.short_description = "批量修改价格为24" #为该函数定义一个显示的名称,可以不设置
actions = (batch_update_price,)

 
 

Django admin site应用的更多相关文章

  1. Django Admin site 显示问题

    Django Admin site 显示问题 今天配置了一下Django admin site,可是admin site的显示有一些问题,当我打开源码.訪问里面的admin 的css 文件时候,htt ...

  2. Django admin site(三)InlineModelAdmin

    InlineModelAdmin class InlineModelAdminclass TabularInlineclass StackedInline 举例,有两个Model: from djan ...

  3. Django admin site(一)ModelAdmin Options

    Admin管理界面是django的杀手级应用.它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即向网站中添加内容. 要使用admin,可以按照下面的步骤: 将'dj ...

  4. django admin site (三)

    1.自定义模板设置: ModelAdmin. add_form_template Path to a custom template, used by add_view(). ModelAdmin. ...

  5. django admin site配置(二)

    1. ModelAdmin.inlines 将有外键的子类包含进视图 ,实例: class Author(models.Model): name = models.CharField(max_leng ...

  6. Django admin site(二)ModelAdmin methods

    ModelAdmin methods save_model(request, obj, form, change) 此方法为admin界面用户保存model实例时的行为.request为HttpReq ...

  7. Django admin 权威指南(一)

    版本: Django 1.10 此部分由官方文档<6.5.1 The Django admin site>翻译而来. 6.5.1.1 概览 默认情况下,使用startproject的时候, ...

  8. Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接

    在文章 Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接(一) 中我们成功的为/feedback/feedback_stats/路径自定义了使用tem ...

  9. Django admin定制化,User字段扩展[原创]

    前言 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用 ...

随机推荐

  1. vue 实现textarea展示时自动换行

    利用 v-html 展示 str.replace(/\n|\r\n/g, '<br>') 数据 完美解决

  2. 安卓开发之Toolbar返回键

    本文前三步演示了为Toolbar添加返回键并实现返回的步骤,第四步给出了设置返回键颜色的方法. 1.在xml布局中引用toolbar: <android.support.design.widge ...

  3. 系统模块 sys 函数的调用

    系统模块 sys 运行时系统相关的信息 sys模块的数据 数据 描述 sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 '' sys.modules 已加载模块的字典 s ...

  4. list 列表 函数的引用

    方法 意义 L.index(v [, begin[, end]]) 返回对应元素的索引下标, begin为开始索引,end为结束索引,当 value 不存在时触发ValueError错误 L.inse ...

  5. CAFFE(四):Ubuntu 下安装jupyter notebook

    第一步.安装 pycaffe notebook 接口环境 在上一步成功安装 caffe 之后,就可以通过 caffe 去做训练数据集或者预测各种相关的事了,只不过需要在命令行下通过 caffe 命令进 ...

  6. GPU Debugger

    https://gpuopen.com/presentations/2019/digital-dragons-2019-make-your-game-friendly.pdf https://grap ...

  7. 【leetcode】1289. Minimum Falling Path Sum II

    题目如下: Given a square grid of integers arr, a falling path with non-zero shifts is a choice of exactl ...

  8. TabSheet源码

    TabSheet.h #if !defined(AFX_TABSHEET_H__42EE262D_D15F_46D5_8F26_28FD049E99F4__INCLUDED_) #define AFX ...

  9. Luogu P2824 [HEOI2016/TJOI2016]排序 线段树+脑子

    只会两个$log$的$qwq$ 我们二分答案:设答案为$ans$,则我们把$a[i]<=ans$全部设成$0$,把$a[i]>ans$全部设成$1$,扔到线段树里,这样区间排序(升序)就是 ...

  10. 小米oj 不要乱改代码(并查集)

     不要乱改代码 序号:#91难度:非常难时间限制:2000ms内存限制:50M 描述 最近小米公司内爆发了一种名叫"瞎改我代码就会死"的传染病. 传播方式是只要与染病者共同编辑过一 ...