Django从Models 10分钟定制一个Admin后台
目录
简介

Django自带一个Admin后台, 支持用户创建,权限配置和所有模型的增删改查功能, 只需要一些简单的配置就可快速得到一个开箱可用的后台管理系统
操作步骤
1. 更改设置,使用中文/亚洲时区
修改项目下django_shop目录下的settings.py文件
修改以下三行
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_L10N = False
添加以下两行, 已更改时间显示格式
DATETIME_FORMAT = 'Y年m月d日 H:i:s'
DATE_FORMAT = 'Y年m月d日'
2. 为Models提供中文显示名称和实例名称
修改项目shop目录下的models.py, 为每个模型添加meta信息和__str__方法
from django.db import models
class Category(models.Model):
...
class Meta:
verbose_name_plural = verbose_name = "分类" # 该模型在后台显示的名称
def __str__(self): # 该模型每一个实例显示其name
return self.name
class Product(models.Model):
...
class Meta:
verbose_name_plural = verbose_name = "商品"
def __str__(self):
return self.name
class Order(models.Model):
...
class Meta:
verbose_name_plural = verbose_name = "订单"
def __str__(self):
return "{}的订单".format(self.username)
class OrderItem(models.Model):
...
class Meta:
verbose_name_plural = verbose_name = "订单条目"
def __str__(self):
return "{}订单条目".format(self.order)
3. 修改shop目录下的admin.py, 将模型注册到admin应用中
from django.contrib import admin
from .models import Category, Product, Order, OrderItem
admin.site.site_header = 'Django-Shop后台'
admin.site.site_title = 'Django-Shop后台'
class OrderItemInline(admin.TabularInline): # 建立内联表单, 用于将订单条目内嵌入订单的表单中
model = OrderItem
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
fields = ('name', 'slug')
list_display = ('name', 'slug')
list_filter = ('name', 'slug')
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
fields = ('name', 'slug', 'category', 'price', 'available', 'description') # 详情表单包含的字段, 支持嵌套分组(将一行展示)
list_display = ('name', 'category', 'price', 'available', 'created', 'updated') # 列表显示字段
list_filter = ('category', 'available') # 列表筛选字段
search_fields = ('name', ) # 列表可搜索字段
list_editable = ('price', 'available') # 列表可编辑字段
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
fields = ('username', 'mobile', 'city', 'address', 'pay_status')
list_display = ('username', 'mobile', 'city', 'pay_status', 'created', 'updated')
list_filter = ('username', 'city', 'pay_status')
search_fields = ('username', 'mobile')
list_editable = ('pay_status', )
inlines = [OrderItemInline] # 嵌入订单条目内联表单
完成!!!
使用演示


注: 本次只简单实现了将模型注册到admin后台中,以实现通过admin后台对模型进行增删改查的基本功能, 其他定制功能/插件及admin页面定制, 没有涉及.
如果想要实现这方面的功能可以自行百度或联系我: 微信 lockingfree
Django从Models 10分钟定制一个Admin后台的更多相关文章
- Django从Models 10分钟建立一套RestfulApi
目录 Django从Models 10分钟建立一套RestfulApi Django从Models 10分钟定制一个Admin后台 简介 Django是一套完善而强大的web开发框架, 结合Djang ...
- 10分钟搭建一个小型网页(python django)(hello world!)
10分钟搭建一个小型网页(python django)(hello world!) 1.安装django pip install django 安装成功后,在Scripts目录下存在django-ad ...
- CBrother脚本10分钟写一个拯救“小霸王服务器”的程序
CBrother脚本语言10分钟写一个拯救“小霸王服务器”的程序 到了一家新公司,接手了一坨c++服务器代码,到处内存泄漏,这服务器没有数据库,挂了后重启一下就好了,公司就这么凑活着用了几年了,定时重 ...
- 10 分钟实现一个自己的server监控器
需求 近期须要给自己的server加入监控器.目的是监控server的内存.CPU.磁盘占用率,资源占用率过高的话能给自己发个提醒.当前主流的平台通常会提供邮件.短息.甚至会提供微信提醒,只是这类提醒 ...
- Django 12 中间件、上下文处理器和admin后台
Django 12 中间件.上下文处理器和admin后台 一.中间件 #Django中间件 (Middleware) # 一个轻量级.底层的“插件”系统,可以介入Django的请求和响应处理过程,修改 ...
- python scrapy 入门,10分钟完成一个爬虫
在TensorFlow热起来之前,很多人学习python的原因是因为想写爬虫.的确,有着丰富第三方库的python很适合干这种工作. Scrapy是一个易学易用的爬虫框架,尽管因为互联网多变的复杂性仍 ...
- [入门到吐槽系列] Webix 10分钟入门 一 管理后台制作
前言 本人是服务端程序员,同时需要兼职前端开发.常用的就是原生态的HTML.Javascript,也用过ExtJS.Layui.可是ExtJS变公司后非常难用.Layui上手还行,用过一段时间,会觉得 ...
- Java工作流引擎结合可视化表单开发,10分钟完成一个业务流程发布
回忆以前工作流引擎的应用,感觉历历在目啊!当初公司接了一个项目关于政府单位公文流转的管理系统,一开始客户跟我画了十多张业务流程图.话说这十多张业务流程图,涉及的业务范围还蛮多,像用审批授权,开通流程, ...
- 10分钟写一个markdown编辑器
marked.js Marked是一个Markdown解析引擎. vue.js Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vu ...
随机推荐
- spring-boot-plus CORS跨域处理
CORS跨域处理 CORS:Cross-Origin Resource Sharing CORS是一种允许当前域(domain)的资源(比如html/js/web service)被其他域(domai ...
- Python占位符使用总结
格式化对象为字符串:%s myName=input('Enter your name:') userAge=input('Enter your age:') userHight=input('Ente ...
- 如何确定asp.net请求生命周期的当前处理事件
1 首先在全局应用程序里面添加如下代码 using System; using System.Collections.Generic; using System.Linq; using System. ...
- BBPlus团队ALPHA冲刺博客(肖文恒)
ALPHA冲刺博客 第一天:https://www.cnblogs.com/bbplus/p/11931039.html 第二天:https://www.cnblogs.com/bbplus/p/11 ...
- iPhone 11来了
- 第三章、Django之路由层
目录 第三章.Django之路由层 一 路由的作用 二 简单的路由配置 三 分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的re_path与path 第三章.Django之路 ...
- linux 下安装 jdk1.7
1.官网 下载jdk7版本 地址: http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-jav ...
- Error:Execution failed for task ':app:compileDebugJavaWithJavac'
百度一下呗 查找了各种解决方案,都不对症. 最后发现,造成这种异常的原因有很多.具体的还是要去终端编译,查看到底是什么地方出错了,然后具体问题具体分析. 终端进入项目的根目录,然后输入命令 ./gra ...
- drone 更新仓库为truested
drone 更新仓库为truested drone repo update -trusted=true my_org/repository DRONE_USER_CREATE=username:oct ...
- 原生js中如果有多个onload事件解决方案
在一个页面中有两个JavaScript 分别都用到了window.onload 一个是:window.onload=func1,另一个是:window.onload=func2 这样就造成了一个Jav ...