本篇文章首席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字段的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。