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迭代器和生成器介绍
Mar 06 Python
Python常用算法学习基础教程
Apr 13 Python
python正则表达式爬取猫眼电影top100
Feb 24 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
Python GUI编程完整示例
Apr 04 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
python实现简单五子棋游戏
Jun 18 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
Jul 04 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
windows+vscode安装paddleOCR运行环境的步骤
Nov 11 Python
python3从网络摄像机解析mjpeg http流的示例
Nov 13 Python
Python sklearn分类决策树方法详解
Sep 23 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
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
2018/08/15 PHP
优化javascript的执行速度
2010/01/23 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
js+html5实现侧滑页面效果
2017/07/15 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
python操作xml文件示例
2014/04/07 Python
python小技巧之批量抓取美女图片
2014/06/06 Python
Django 如何获取前端发送的头文件详解(推荐)
2017/08/15 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python实现二维数组输出为图片
2018/04/03 Python
python logging 日志的级别调整方式
2020/02/21 Python
keras实现VGG16方式(预测一张图片)
2020/07/07 Python
python 爬虫请求模块requests详解
2020/12/04 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
html通过canvas转成base64的方法
2019/07/18 HTML / CSS
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
Ego Shoes官网:英国时髦鞋类品牌
2020/10/19 全球购物
本科生求职简历的自我评价
2013/10/21 职场文书
高中数学教学反思
2014/01/30 职场文书
青年文明号复核材料
2014/02/11 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
安全教育月活动总结
2014/05/05 职场文书
医药销售自荐书
2014/05/29 职场文书
篮球赛口号
2014/06/18 职场文书
干部作风建设心得体会
2014/10/22 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python