首页>>后端>>Python->DJANGO模型类怎么设置中文编码(django model字段)

DJANGO模型类怎么设置中文编码(django model字段)

时间:2023-12-01 本站 点击:0

本篇文章首席CTO笔记来给大家介绍有关DJANGO模型类怎么设置中文编码以及django model字段的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、如何在 Django models 中使用多语言 的简单方法2、django mysql 中文乱码怎么办3、如何让django中的admin组件的表的字段显示为中文4、django乱码 英文显示不出来 utf-8 python编码 python web 编程 计算机 网站5、如何admin管理界面中显示中文model名称

如何在 Django models 中使用多语言 的简单方法

django model中使用多语言支持的快速方法, 该方法通过建立自定义的template tag 选取model中重复的语言field来达到多语言显示的目的.

假设我们有这样一个models.py, 某一个model中包含多个重复的field, 每个重复的field都是用来保存其对应的显示语言:

class MyObject(models.Model):

name = models.CharField(max_length=50)

title_en = models.CharField(max_length=50)

title_es = models.CharField(max_length=100)

title_fr = models.CharField(max_length=100)

description_en = models.CharField(max_length=100)

description_es = models.CharField(max_length=100)

description_fr = models.CharField(max_length=100)

class MyOtherObject(models.Model):

name = models.CharField(max_length=50)

content_en = models.CharField(max_length=200)

content_es = models.CharField(max_length=200)

content_fr = models.CharField(max_length=200)

注意, 我们将下划线和语言代码作为后缀放在对应的field后面, 这将作为一个语言的查找标记.

然后我们在settings.py中添加需要翻译的field名:

TRANSLATION_FIELDS = ('title', 'description', 'content')

在项目目录中添加templatetags目录(不要忘了怎家__init__.py), 并在其中建立lazy_tags.py:

from django import template

from settings import TRANSLATION_FIELDS

register = template.Library()

class LocalizedContent(template.Node):

def __init__(self, model, language_code):

self.model = model

self.lang = language_code

def render(self, context):

model = template.resolve_variable(self.model, context)

lang = template.resolve_variable(self.lang, context)

for f in TRANSLATION_FIELDS:

try:

setattr(model, f, getattr(model, '%s_%s' % (f, lang)))

except AttributeError:

pass

return ''

@register.tag(name='get_localized_content')

def get_localized_content(parser, token):

bits = list(token.split_contents())

if len(bits) != 3:

raise template.TemplateSyntaxError("'get_localized_content' tag takes exactly 2 arguments")

return LocalizedContent(model=bits[1], language_code=bits[2])

为了在template中使用自定义的tag, 我们首先载入:

{% load lazy_tags %}

然后使用自定义tag, 传入object和语言代码, 取的翻译. 比如西班牙语:

{% get_localized_content object 'es' %}

此时, 如果没有语言代码传入, 那么无法使用obj.description调用某一个语言field. 所以我们配合django.core.context_processors.request, context processor一起使用:

TEMPLATE_CONTEXT_PROCESSORS = (

...

'django.core.context_processors.request',

)

我们就能在template中这样使用:

{% get_localized_content object request.LANGUAGE_CODE %}

django mysql 中文乱码怎么办

创建所有.py文件时,编码方式都必须为UTF-8,且所有.py文件的最前面添加 # -*- coding:utf-8 -*-

2、创建所有.html文件时,编码方式也必须为UTF-8,且要添加标签 meta http-equiv="Content-Type" content="text/html; charset=utf-8" /

3、编辑MySQL安装目录下的my.ini配置文件,如果是my-default.ini,可以将其更改为my.ini:

在 [mysqld] 标签下加上三行

default-character-set = utf8

character_set_server = utf8

在 [mysql] 标签下加上一行

default-character-set = utf8

在 [mysql.server]标签下加上一行

default-character-set = utf8

在 [mysqld_safe]标签下加上一行

default-character-set = utf8

在 [client]标签下加上一行

default-character-set = utf8

保存my.ini,然后重新启动MySql服务

进入mysql查看字符集(mysqlshow variables like ‘character_set_%’;)

4、navicat 设置

①数据库属性

如何让django中的admin组件的表的字段显示为中文

Django forms使用容易, 又方便扩展, 因此Django admin和CBVs基本都基于forms使用. 事实上, 由于django forms的强大验证功能, 大多数Django API 框架都是用forms作为其验证的一部分. 虽然django forms的学习需要花费一点时间, 但如果将forms, mod...

django乱码 英文显示不出来 utf-8 python编码 python web 编程 计算机 网站

应该是{%

extends

“base.html”

%}报错了吧,你把这个文件也贴出来一下。

如何admin管理界面中显示中文model名称

在定义django模型时,我喜欢使用驼峰命名法,比如定义一个叫“BookReviewWeibo”的model,代表“微读书”。但是,django的admin管理界面在显示这个model的名称时,会将这个驼峰式的名称拆分为独立的单词,并最后一个单词使用复数。例如“BookReviewWeibo”这个model,在admin中会被显示为“book review weibos”,十分难看。

使用django的国际化接口解决此问题会比较麻烦,其实大可不必这样。models.Model类的内部类Meta,有两个特殊的选项:verbose_name和verbose_name_plural。顾名思义,verbose_name为model提供了一个更容易让人阅读的名称,而verbose_name_pluralze则是这个名称的复数形式。一般情况下,我会使用一个中文的verbose_name,由于中文不区分单复数,因此通常会将同一个中文字符串赋值给verbose_name和verbose_name_plural。比如,对于前面的“BookReviewWeibo”类,可以写成:

结语:以上就是首席CTO笔记为大家介绍的关于DJANGO模型类怎么设置中文编码和django model字段的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/5678.html