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 ...
随机推荐
- 4.Linux系统命令及其使用详解
运维工程师必会的109个Linux命令 文件管理basename:从文件名中去掉路径和扩展名 cat:把档案串连接后传到基本输出(屏幕或加 > filename 到另一个档案)cd:切换目录 ...
- 11.vim常用操作
:set nu在命令模式下显示行号 进入输入模式 新增 (append) a :从光标所在位置後面开始新增资料,光标後的资料随新增资料向後移动. A:从光标所在列最後面的地方开始新增资料. 插入 ...
- 【AC自动机】最短母串
[题目链接] https://loj.ac/problem/10061 [题意] 给定 n 个字符串 S1-Sn,要求找到一个最短的字符串 T,使得这 n 个字符串都是 T 的子串. [题解] 类似于 ...
- Flask 卡住, 无响应问题
自己学习Flask+Gevent, 做了一个小接口服务器, 但在收到请求后, 打印请求的报文, 并返回正确格式, 运行后会出现收到请求消息后,Flask卡住无响应的的问题, 有时候点击ctrl+C才能 ...
- connect() failed (111: Connection refused) while connecting to upstream的解决
遇到这种情况, 首先 1.检查php-fpm是否启动---------如果没启动->启动, 2.用命令 netstat -ant | grep 9000 查看php-fpm进程,如果没启动-&g ...
- 根据CPU核心数确定线程池并发线程数(转)
一.抛出问题 关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下: 第一派:<Java Concurrency in Practice>即&l ...
- Delphi 抽象方法
- VSCode 快捷键定义
默认的 Toggle explore side bar 快捷键为 Ctrl + B, 但是这和 Vim 的快捷键冲突,解决方法: File > Preferences > Keyb ...
- set调用add报错:
Map<String, String> goodsStandMap = new HashMap<>();goodsStandMap.put("key1", ...
- 牛客第十场 F.Popping Balloons
第一维直接遍历 第二维用线段树维护每个最左端可以得到的贡献 在线段树上每次删除一个点会影响到 X X-R X-2*R 3个值 最多操作1e5次 复杂度 6*n*logn(删了还要加回来 #i ...