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 相关文章推荐
基于scrapy实现的简单蜘蛛采集程序
Apr 17 Python
Python数据分析之真实IP请求Pandas详解
Nov 18 Python
详解如何使用Python编写vim插件
Nov 28 Python
pandas进行数据的交集与并集方式的数据合并方法
Jun 27 Python
Python延时操作实现方法示例
Aug 14 Python
使用python将图片格式转换为ico格式的示例
Oct 22 Python
深入浅析python 协程与go协程的区别
May 09 Python
python取余运算符知识点详解
Jun 27 Python
python实现微信自动回复机器人功能
Jul 11 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 Python
Python logging日志模块 配置文件方式
Jul 12 Python
用Python写一个简易版弹球游戏
Apr 13 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实现留言板功能的详细代码
2017/03/25 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
JS 遮照层实现代码
2010/03/31 Javascript
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
限制上传文件大小和格式的jQuery插件实例
2015/01/24 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
jQuery ui实现动感的圆角渐变网站导航菜单效果代码
2015/08/26 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
基于vue-cli 打包时抽离项目相关配置文件详解
2018/03/07 Javascript
关于js对textarea换行符的处理方法浅析
2018/08/03 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
微信小程序获取复选框全选反选选中的值(实例代码)
2019/12/17 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
Python编程修改MP3文件名称的方法
2017/04/19 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
python Pillow图像处理方法汇总
2019/10/16 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
日本航空官方网站:JAL
2019/06/19 全球购物
计算机网络毕业生自荐信
2013/10/01 职场文书
运动会广播稿80字
2014/01/23 职场文书
安全保证书范文
2014/04/29 职场文书
自主招生推荐信范文
2014/05/10 职场文书
感恩节活动策划方案
2014/05/16 职场文书
初中毕业生自我评价
2015/03/02 职场文书
教师调动申请报告
2015/05/18 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
大学毕业生自我鉴定范文
2019/06/21 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
Python 内置函数速查表一览
2021/06/02 Python