发布网友 发布时间:1天前
共1个回答
热心网友 时间:1天前
本篇文章首席CTO笔记来给大家介绍有关DJANGO模型类怎么设置中文编码以及djangomodel字段的相关内容,希望对大家有所帮助,一起来看看吧。
本文目录一览:1、如何在Djangomodels中使用多语言的简单方法2、djangomysql中文乱码怎么办3、如何让django中的admin组件的表的字段显示为中文4、django乱码英文显示不出来utf-8python编码pythonweb编程计算机网站5、如何admin管理界面中显示中文model名称如何在Djangomodels中使用多语言的简单方法djangomodel中使用多语言支持的快速方法,该方法通过建立自定义的templatetag选取model中重复的语言field来达到多语言显示的目的.
假设我们有这样一个models.py,某一个model中包含多个重复的field,每个重复的field都是用来保存其对应的显示语言:
classMyObject(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)
classMyOtherObject(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:
fromdjangoimporttemplate
fromsettingsimportTRANSLATION_FIELDS
register=template.Library()
classLocalizedContent(template.Node):
def__init__(self,model,language_code):
self.model=model
self.lang=language_code
defrender(self,context):
model=template.resolve_variable(self.model,context)
lang=template.resolve_variable(self.lang,context)
forfinTRANSLATION_FIELDS:
try:
setattr(model,f,getattr(model,'%s_%s'%(f,lang)))
exceptAttributeError:
pass
return''
@register.tag(name='get_localized_content')
defget_localized_content(parser,token):
bits=list(token.split_contents())
iflen(bits)!=3:
raisetemplate.TemplateSyntaxError("'get_localized_content'tagtakesexactly2arguments")
returnLocalizedContent(model=bits[1],language_code=bits[2])
为了在template中使用自定义的tag,我们首先载入:
{%loadlazy_tags%}
然后使用自定义tag,传入object和语言代码,取的翻译.比如西班牙语:
{%get_localized_contentobject'es'%}
此时,如果没有语言代码传入,那么无法使用obj.description调用某一个语言field.所以我们配合django.core.context_processors.request,contextprocessor一起使用:
TEMPLATE_CONTEXT_PROCESSORS=(
...
'django.core.context_processors.request',
)
我们就能在template中这样使用:
{%get_localized_contentobjectrequest.LANGUAGE_CODE%}
djangomysql中文乱码怎么办创建所有.py文件时,编码方式都必须为UTF-8,且所有.py文件的最前面添加#-*-coding:utf-8-*-
2、创建所有.html文件时,编码方式也必须为UTF-8,且要添加标签metahttp-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查看字符集(mysqlshowvariableslike‘character_set_%’;)
4、navicat设置
①数据库属性
如何让django中的admin组件的表的字段显示为中文
Djangoforms使用容易,又方便扩展,因此Djangoadmin和CBVs基本都基于forms使用.事实上,由于djangoforms的强大验证功能,大多数DjangoAPI框架都是用forms作为其验证的一部分.虽然djangoforms的学习需要花费一点时间,但如果将forms,mod...
django乱码英文显示不出来utf-8python编码pythonweb编程计算机网站应该是{%
extends
“base.html”
%}报错了吧,你把这个文件也贴出来一下。
如何admin管理界面中显示中文model名称在定义django模型时,我喜欢使用驼峰命名法,比如定义一个叫“BookReviewWeibo”的model,代表“微读书”。但是,django的admin管理界面在显示这个model的名称时,会将这个驼峰式的名称拆分为的单词,并最后一个单词使用复数。例如“BookReviewWeibo”这个model,在admin中会被显示为“bookreviewweibos”,十分难看。
使用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模型类怎么设置中文编码和djangomodel字段的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。