解决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 问题描述: 浏览器页面显示如下 解决方法: 安装中文支 ...
随机推荐
- TouTiao开源项目 分析笔记13 最后一个订阅号的实现主页面
1.实现订阅号的基础类 1.1.本地订阅号的Bean类==>MediaChannelBean public class MediaChannelBean implements Parcelabl ...
- MyEclipse - 问题集 - Workspace in use or cannot be created, choose a different one(转)
转:http://wsfly.iteye.com/blog/1044986 eclipse 使用一段时间后,有时会因为一些故障自己就莫名奇妙的关闭了,再打开时有时没有问题,有时有会提示错误 Works ...
- Unicode字符图标
http://unicode-table.com/cn/#control-character
- USACO Section2.3 Controlling Companies 解题报告 【icedream61】
concom解题报告------------------------------------------------------------------------------------------ ...
- 《移动App性能评测与优化》读书笔记
第一章:内存 内存的主要组成索引: Native Heap:Native代码分配的内存,虚拟机和Android框架本身也会分配 Dalvik Heap:Java代码分配的对象 Dalvik Oth ...
- ADB连接手机遇到的问题:list of devices attached
今天工作时想尝试一下使用ADB无线连接手机,结果遇到了下面这样的问题,浪费了几十分钟的时间,挺闹心的,因此想分享出来... 首先 第一步:使用USB数据线连接手机,手机弹出选项时,选择仅充电,然后wi ...
- Python 3基础教程6-for循环语句
本文介绍另外一种循环语句,for循环,直接看例子. 用for实现打印1到9的数字. 方法一:写入一个列表,然后遍历列表 # 这里介绍 for循环# 打印1到9 exampleList = [1,2,3 ...
- Java基础-3类和对象声明与创建
一).在1和2中有粗略介绍过类和对象的概念,在这里简单回顾一下: 对象与类:一个实际或者虚拟的物体,这个物体既是我们的对象,这个物体呢又是属于一个分类,如动物类,人类 二).创建对象: 在创建对象的时 ...
- day04_08-while查询所有行
<?php $link = @mysql_connect('localhost','root',''); mysql_query('use test',$link); mysql_query(' ...
- PoolManager
我用的PoolManager版本是5.5.2的,导入的包总共有三个文件夹:Editor,Plugins,PoolManagerExampleFiles 1.Editor这个文件夹里面的东西,顾名思义, ...