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 ...
随机推荐
- gitlab安装指南(gitlab-ce-9.4.3-ce.0.el7.x86_64 centos7)
1,安装gitlab wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-9.4.3-ce.0.el7. ...
- Unable to find optional library: org.apache.http.legacy 错误
在目录adt-bundle-windows-x86_64-20140702\sdk\platforms\android-20或者 C:\Users\Administrator\AppData\Loca ...
- LibSVM格式简介
对于训练或预测,XGBoost采用如下格式的实例文件: train.txt 1 101:1.2 102:0.03 0 1:2.1 10001:300 10002:400 0 0:1.3 1:0.3 1 ...
- 将数组转化为List集合
字符串转换为数组.将数组转换为List集合 public void testStringToList(){ String s="123-abc-456"; System.out.p ...
- C语言快速判断素数——不超时
这属于算法上的问题,好好考虑一下算法,还要考虑一下素数的定义. 素数是只有1和本身能整除的整数.所以在求素数的时候,要将素数与1到素数本身中间的所有整数都相除,看是否有整除的数,如果有,那肯定不是素数 ...
- No database provider has been configured for this DbContext
var context = ((IInfrastructure<IServiceProvider>)set).GetService<DbContext>(); 在EF Core ...
- git 操作实践
git操作: - git是一个用于帮助用户实现版本控制的软件 #首先创建项目 1. cd到项目文件目录 2. 鼠标右键点击 Git Bash Here 3. git init #在项目文件目录生成 . ...
- cmd设置电脑自动关机
cmd设置电脑自动关机 设置:(3600代表一小时,单位s) shutdown -s -t 3600 取消 shutdown -a
- css 对div用hover设置border,出现抖动和div走位问题,解决方法
样式设置 : div:hover { border:1px solid red;} 当鼠标移动到div时,产生抖动和偏移. 产生的原因: 是因为设置border时设置了1px边框,多出的这1px,与其 ...
- 在线p图网址
在线P图网址 如果你是简易的P图,不用那么麻烦的去下载安装Photoshop,可以使用以下网址在线编辑 https://www.uupoop.com/ps/?hmsr=ps_menu