解决Django的admin界面中文乱码
解决Django的admin界面中文乱码
问题陈述
最近在做一个很小的Django项目时,使用了自带的sqlite作为数据库。后台admin界面在显示中文数据时,总会遇到乱码。这里截取一小部分代码:
models.py文件
# _*_ coding:utf-8 _*_
from __future__ import unicode_literals
from django.db import models
from django.core.urlresolvers import reverse
# Create your models here.
class FatherMenu(models.Model):
title = models.CharField(u"菜单名", max_length=20)
slug = models.CharField(u"链接", max_length=100, db_index=True)
son = models.BooleanField("子菜单?", default=False)
class Meta:
verbose_name = u"一级菜单"
verbose_name_plural = u"一级菜单"
def __str__(self):
return self.title
导入数据data.json,例如:
[
{
"model":"seclab.FatherMenu",
"pk":1,
"fields":
{
"title":"首页",
"slug":"/",
"son":0
}
},
{
"model":"seclab.FatherMenu",
"pk":2,
"fields":
{
"title":"概况",
"slug":"/introduction/",
"son":0
}
},
{
"model":"seclab.FatherMenu",
"pk":3,
"fields":
{
"title":"动态",
"slug":"/dynamic/",
"son":1
}
}
]
from django.contrib import admin
# Register your models here.
from models import *
class FatherMenuAdmin(admin.ModelAdmin):
list_play = ('title', 'slug', 'son')
admin.site.register(FatherMenu, FatherMenuAdmin)
导入数据、创建superuser、运行server
python manage.py makemigrations
python manage.py migrate
python manage.py loaddata fatherMenu.json
python manage.py createsuperuser --username admin --email blank
python manage.py runserver 0.0.0.0:8080
登入到后台的admin界面,假设查看一级菜单->首页,就会报错:
UnicodeEncodeError at /admin/seclab/fathermenu/1/change/
'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
Unicode error hint
The string that could not be encoded/decoded was: 首页
解决
试了几次发现,只要在models.py中,每个__self__函数返回的字段包含中文,就会在admin界面引发上述UnicodeEncodeError。
具体到本例,__self__函数返回了self.title,表示菜单名,而导入数据时每个title字段都是像首页、概况、动态这样的中文。
搜到了两种解决方法,可以任选一种:
1.用__unicode__函数代替__str__
原先写的模型代码中的方法用提 def __str__(self): 这个是旧版本中用的方法,在Django 0.96以后的版本中,应该换成 def __unicode__(self):, 这样就解决了字符串传递时出错的问题,统一编码为Unicode字符串。
class FatherMenu(models.Model):
···
def __unicode__(self):
return self.title
引自:Django报错UnicodeEncodeError: 'ascii' codec can't encode characters 之解决方法
2.使用sefdefaultencoding函数
# _*_ coding:utf-8 _*_
from __future__ import unicode_literals
from django.db import models
from django.core.urlresolvers import reverse
# Create your models here.
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
class FatherMenu(models.Model):
···
引自:解决Python2.7的UnicodeEncodeError: ‘ascii’ codec can’t encode异常错误
解决Django的admin界面中文乱码的更多相关文章
- oracle安装界面中文乱码解决
在安装oracle时如果我们用的是英文安装没有任何问题,但是我要安装中文的,结果中文界面就出现了乱码了,后来网上找了原因是要安装中文包才可以,下面我来介绍一下. 在Linux的X window里安装o ...
- 解决Ubuntu 14下,PhpStorm 9.x 编辑器界面中文乱码的问题
在Ubuntu 14中,安装了 PhpStorm 9.02,发现 软件界面中文乱码,但是源码编辑处却显示正常,如下图所示: 很奇怪,猜想,应该是软件界面字体有问题,选了一个没有包含中文字体的字体.先前 ...
- 解决zabbix监控因php问题导致图形界面中文乱码方法
解决因编译php中添加了-enable-gd-jis-conv选项导致Zabbix监控系统图形界面中文乱码问题 现象: php编译参数: 说明: 如果PHP编译时启用–enable-gd-jis-co ...
- Django 连接mysql数据库中文乱码
Django 连接mysql数据库中文乱码 2018年08月25日 20:55:15 可乐乐乐乐乐 阅读数:566 版本:CentOS6.8 python3.6.4 django1.8.2 数据库 ...
- [django]Django站点admin支持中文显示和输入设置
正文: Django站点admin支持中文输入设置,操作如下: 1 需要确定的你的数据库的client客户端和服务端的编码设置为utf-8,如果不是,请将其设置成utf-8编码,我采用mysql,详情 ...
- Django之admin界面恢复及添加数据模型
引自:http://fl0wjacky.github.io/jekyll_demo/2014/07/14/Django-admin.html Django之admin界面恢复及添加数据模型 Djang ...
- 解决Linux文档显示中文乱码问题以及编码转换
解决Linux文档显示中文乱码问题以及编码转换 解决Linux文档显示中文乱码问题以及编码转换 使vi支持GBK编码 由于Windows下默认编码是GBK,而linux下的默认编码是UTF-8,所以打 ...
- 如何解决http请求返回结果中文乱码
如何解决http请求返回结果中文乱码 1.问题描述 http请求中,请求的结果集中包含中文,最终以乱码展示. 2.问题的本质 乱码的本质是服务端返回的字符集编码与客户端的编码方式不一致. 场景的如服务 ...
- Linux 解决Linux下火狐浏览器中文乱码成方块显示问题
解决Linux下火狐浏览器中文乱码成方块显示问题 by:授客 QQ:1033553122 测试环境: CentOS-6.0-x86_64 问题描述: 浏览器页面显示如下 解决方法: 安装中文支 ...
随机推荐
- SpringMVC---web.xml配置详解
web.xml中需要配置的内容 1.配置监听器<listener> 它有两个监听器: 1). <!--配置文件加载监听器--> <listener> <lis ...
- Eclipse 安装(Neon 版本2016年)---Eclipse教程第01课
Eclipse 最新版本 Eclipse Neon,这个首次鼓励用户使用 Eclipse Installer 来做安装,这是一种由Eclipse Oomph提供的新技术,它通过提供一个很小的安装器来使 ...
- JavaSE总结--异常
throwable Error: Exception: 编译型异常: 运行时异常:
- java 解析/读取 种子/bt/torrent 内容
碰到不会的技术问题,我还是先度娘.能中文看懂,为什么非要看英文呢. java 解析/读取 种子/bt/torrent 内容,这个度娘给的满意答案并不是很多.GG之后的搜索结果出现了stackover ...
- 转载: keepalived工作原理和配置说明
转自:http://outofmemory.cn/wiki/keepalived-configuration keepalived是什么 keepalived是集群管理中保证集群高可用的一个服务软件, ...
- 发布“豪情”设计的新博客皮肤-darkgreentrip
豪情 (http://www.cnblogs.com/jikey/)是一名在上海的前端开发人员,长期驻扎在园子里.他为大家设计了一款新的博客皮肤——darkgreentrip. 以下是该博客皮肤的介绍 ...
- linux ubuntu开启sshd
which ssh #查看文件 sudo apt-get install ssh #安装ssh cd /etc/init.d #切换目录 ls -l | grep ssh #执行启动脚本 sudo s ...
- websocket+nodejs+redis实现消息订阅和发布系统
其实我很懒,不想打字,代码已上传到码云,请点此处. 有疑问请一下扫描二维码,加我微信:
- BI商业智能培训系列——(一)概述
简介: Business Intelligence,简称 BI. 商业智能,是指用现代的技术进行数据分析,以实现商业价值,这些技术包括数据仓库技术,线上分析处理技术,数据挖掘,数据展现技术等. 以往的 ...
- (总结)Nginx 502 Bad Gateway错误触发条件与解决方法
一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现.以下是从Google搜集整理的一些Nginx 502错误的排查方法,供参考: Nginx 502 ...