Django admin model 汉化显示文字的实现方法


Posted in Python onAugust 12, 2019

1、将添加blog的后台基本操作

在blog文件夹下新建一个admin.py文件加入一下代码:

from django.contrib import admin 
from djcms.apps.blog.models import Post, Category, Tag 
 
admin.site.register(Post) 
admin.site.register(Category) 
admin.site.register(Tag)

重启服务,再到浏览器上登录到后台,是不是增加了对blog的基本操作,不仅比较完善、界面整洁优雅,而且很多都可以自定义,是不是很酷!后续再慢慢研究。

2、汉化表单、完善表单

目前位置,后台的表单前面的标签label基本上都是默认的字段名字,各种表单也是初始的状态,下面我们简单做些修改。修改后的模型代码如下:

# coding:utf8
from django.db import models 
 
class Category(models.Model): 
 """ 
 文章分类
 """ 
 title = models.CharField('名称', max_length=100)  # 分类名称 
 alias = models.CharField('别名', max_length=100)  # 分类别名(用于 url 优化) 
 sort = models.SmallIntegerField('排序')     # 排序 
 
 class Meta: 
  verbose_name = '分类' 
  verbose_name_plural = '分类' 
  ordering = ['sort'] 
 
 def __unicode__(self): 
  return self.title 
 
class Tag(models.Model): 
 """ 
 文章标签
 """ 
 tagname = models.CharField('标签名', max_length=60)  # 标签名 
 post_ids = models.TextField(editable=False)    # 对应的文章 id 集合的序列 
 
 class Meta: 
  verbose_name = '标签' 
  verbose_name_plural = '标签' 
 
 def __unicode__(self): 
  return self.tagname 
 
class Post(models.Model): 
 """ 
 博客文章
 """ 
 # 文章发布状态 
 CONTENT_STATUS_PUBLISHED = 1 
 # 文章草稿箱状态 
 CONTENT_STATUS_DRAFT = 2 
 # 文章状态选项 
 CONTENT_STATUS_CHOICES = ( 
  (CONTENT_STATUS_PUBLISHED, '发布'), 
  (CONTENT_STATUS_DRAFT, '草稿箱'), 
 ) 
 
 title = models.CharField('标题', max_length=100)     # 标题 
 content = models.TextField('文章内容')        # 内容 
 excerpt = models.TextField('摘要')         # 摘要 
 publish_date = models.DateTimeField('发表时间')      # 发表时间 
 status = models.IntegerField('状态', 
         choices=CONTENT_STATUS_CHOICES, 
         default=CONTENT_STATUS_PUBLISHED)  # 状态:1为正式发布,2为草稿箱 
 comments_count = models.IntegerField(default=0, editable=False)  # 评论总数 
 view_count = models.IntegerField(default=0, editable=False)   # 浏览总数 
 
 alias = models.CharField('别名', max_length=100, blank=True)  # 别名(用于 url 优化) 
 keywords = models.CharField('关键字', max_length=500, blank=True) # 关键字 
 description = models.TextField('描述', blank=True)     # 描述 
 
 user = models.ForeignKey("auth.User", 
        verbose_name = '作者', 
        related_name="%(class)ss")     # 作者 
 categories = models.ManyToManyField(Category, blank=True, 
          verbose_name = '分类', 
          related_name="posts")   # 分类 
 
 class Meta: 
  verbose_name = '文章' 
  verbose_name_plural = '文章' 
  ordering = ['publish_date'] 
 
 def __unicode__(self): 
  return self.title

其中将文章状态选项CONTENT_STATUS_CHOICES 写在Post类中更加合理,而Meta中的verbose_name表示单数形式的显示,verbose_name_plural表示复数形式的显示,因为中文的单数和复数一般不作区别,如果是英文一般默认会的复数是加上了s

进一步完善文章的列表显示和表单,在blog下面的admin.py文件中加入PostAdmin类:

class PostAdmin(admin.ModelAdmin):
 list_display = ('title', 'publish_date', 'user', 'status')  # 列表显示的字段
 search_fields = ('title',)          # 列表包含根据指定字段搜索
 list_filter = ('publish_date',)         # 右侧过滤选项
 
 # 分组表单
 fieldsets = (
  ('基本信息', {'fields': ('title', 'content', 'excerpt', 'publish_date','status', 'user', 'categories')}),
  ('Meta Data', {'fields': ('alias', 'keywords', 'description')}),
 )

注意,有3种类型的域不能按如上方式添加自定义名称:ManyToManyField,OneToOneField,ForeignKey。而应该显示指定:

class Film(models.Model):
 title = models.CharField('片名', max_length=100)
 actors = models.ManyToManyField(Actor,verbose_name='演员')
 pub_date = models.DateField('发行日期')
 publisher = models.ForeignKey(Publisher,verbose_name='发行商')

如果想修改通过admin自动生成的后台管理标题 请用国际化处理, 如果改变布局可以重写admin的页面

以上这篇Django admin model 汉化显示文字的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
讲解python参数和作用域的使用
Nov 01 Python
Python使用正则表达式实现文本替换的方法
Apr 18 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Python中序列的修改、散列与切片详解
Aug 27 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
使用实现pandas读取csv文件指定的前几行
Apr 20 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Django中Middleware中的函数详解
Jul 18 Python
python中sys模块是做什么用的
Aug 16 Python
详解pycharm配置python解释器的问题
Oct 15 Python
python BeautifulSoup库的安装与使用
Dec 17 Python
Python简易版图书管理系统
Aug 12 #Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 #Python
python中eval与int的区别浅析
Aug 11 #Python
将Python文件打包成.EXE可执行文件的方法
Aug 11 #Python
python多线程同步实例教程
Aug 11 #Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 #Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 #Python
You might like
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
新手入门常用代码集锦
2007/01/11 Javascript
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
jQuery+jRange实现滑动选取数值范围特效
2015/03/14 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
webpack入门必知必会
2017/01/16 Javascript
javascript笔记之匿名函数和闭包
2017/02/06 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
vue项目中用cdn优化的方法
2018/01/03 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
python实现代码行数统计示例分享
2014/02/10 Python
Python 序列化 pickle/cPickle模块使用介绍
2014/11/30 Python
python实现用户答题功能
2018/01/17 Python
python安装twisted的问题解析
2018/08/21 Python
Python查找数组中数值和下标相等的元素示例【二分查找】
2019/02/13 Python
Django中的静态文件管理过程解析
2019/08/01 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
Yahoo-PHP面试题2
2014/12/06 面试题
护理学专业推荐信
2013/12/03 职场文书
实习心得体会
2014/01/02 职场文书
百度吧主申请感言
2014/01/12 职场文书
营销总经理岗位职责
2014/02/02 职场文书
应届生自荐信范文
2014/02/21 职场文书
土建专业大学生自荐信范文
2014/04/09 职场文书
监考失职检讨书
2015/01/26 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书