django-admin 汉化

1.管理页面汉化

方法一:

settings.py文件中修改配置为:

LANGUAGE_CODE = 'zh-Hans'

TIME_ZONE = 'Asia/Shanghai'

方法二:

中间件中添加:(注意添加位置顺序)

'django.middleware.locale.LocaleMiddleware', 

2.app名称汉化

 

 编辑如图所示的文件

添加一行代码:

from django.apps import AppConfig


class BlogConfig(AppConfig):
    name = 'blog'
    #admin后台汉化 添加如下代码
    verbose_name = '博客'

然后在setting中把这个配置注册

 

 

此时admin后台首页就能汉化展示对应的app名字

3.app下的数据表名的汉化

如上图,汉化后的app名下 存在已经汉化好的该app下的各个数据表名,这里汉化的方法为,在models.py文件中对各个模型分别添加如下代码

class Category(models.Model):
    name = models.CharField(max_length=30)
    class Meta:
        verbose_name = '博客分类'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name

如上,这是一个博客分类的模型,添加元类  verbose_name  就为该模型的详细名字(这里中文汉化),verbose_name_plural 表示复数  这里单复数都叫 "博客分类"

4.数据表下 各个字段的汉化

点击上图中的数据表,进入到如下的数据列表中,其中对每个数据字段的汉化需要在定义模型的时候添加到小括号中

具体demo如下:

这里有两种方式添加 verbose_name ,第一种就是位置参数,在括号内的第一个参数传递  要汉化成内容,第二种就是参数名='  '的方式:verbose_name='汉化内容'

其中由于外键连接的时候第一个参数名需要指定数据表,所以建议统一使用  第二种 verbose_name=' '的方式来进行汉化

#定义文章表
class Post(models.Model):
    #文章标题
    title = models.CharField('标题',max_length=30)
    #文章正文,使用textfield,使用短的字符使用charfiled,长一点的推荐textfiled
    body = models.TextField('正文')
    #文章创建时间  和最后一次修改时间
    created_time = models.DateTimeField('创建时间')
    last_modified_time = models.DateTimeField('维护时间')
    #文章摘要,有些文章没有摘要,但默认情况下 charfiled必须存入数据,负责会报错,指定blank=True之后就可以允许空值了
    excerpt = models.CharField('文章摘要',max_length=200,blank=True)
    #关联分类表,一个分类下有多个 文章,但是一个文章只能对应一个分类,所以是一对多的关系,使用foreignkey
    #自 django 2.0 以后,ForeignKey 必须传入一个 on_delete 参数用来指定当关联的数据被删除时,被关联的数据的行为
    #我们这里假定当某个分类被删除时,该分类下全部文章也同时被删除,因此    使用 models.CASCADE 参数,意为级联删除。
    category = models.ForeignKey(Category,verbose_name='分类',on_delete=models.CASCADE)
    #关联标签表,一个文章对应多个标签,同时一个标签也对应多个文章,所以是多对多的关系,使用manytomanyfield
    #同时我们允许文章没有标签,所以允许为空 blank=True
    tag = models.ManyToManyField(Tag,verbose_name='标签',blank=True)
    #作者,这里user直接使用django.contrib.auth.models导入 是 django 内置的应用,专门用于处理网站用户的注册、登录等流程
    #规定一篇文章只能是一个作者  而一个作者能对应多个文章  所以是一对多的关系 使用foreignkey
    user = models.ForeignKey(User,verbose_name='作者',on_delete=models.CASCADE)

 

posted @ 2020-10-09 17:01  Alantammm  阅读(210)  评论(0编辑  收藏  举报