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发送邮件的实例代码(支持html、图片、附件)
Mar 04 Python
Python标准异常和异常处理详解
Feb 02 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
利用Python中unittest实现简单的单元测试实例详解
Jan 09 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 Python
Python实现的求解最小公倍数算法示例
May 03 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
python删除字符串中指定字符的方法
Aug 13 Python
使用Python实现微信拍一拍功能的思路代码
Jul 09 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
python+playwright微软自动化工具的使用
Feb 02 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 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日历程序
2006/12/06 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
2014/04/24 PHP
php生成shtml类用法实例
2014/12/09 PHP
基于PHP实现假装商品限时抢购繁忙的效果
2015/10/16 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
PHP hebrev()函数用法讲解
2019/02/21 PHP
js获取元素在浏览器中的绝对位置
2010/07/24 Javascript
40款非常棒的jQuery 插件和制作教程(系列二)
2011/11/02 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
根据当前时间在jsp页面上显示上午或下午
2014/08/18 Javascript
使用JQuery选择HTML遍历函数的方法
2016/09/17 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
create-react-app 修改为多入口编译的方法
2018/08/01 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
python双向链表实现实例代码
2013/11/21 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
关于Python解包知识点总结
2020/05/05 Python
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
意大利消费电子产品购物网站:SLG Store
2019/12/26 全球购物
Linux内核产生并发的原因
2016/11/08 面试题
正规的求职信范文分享
2013/12/11 职场文书
应届硕士毕业生自荐信
2014/05/26 职场文书
计算机软件专业求职信
2014/06/10 职场文书
企业法人授权委托书
2014/09/25 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
综合素质评价个性与发展自我评价
2015/03/06 职场文书
大队委员竞选稿
2015/11/20 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers