"object has no attribute 'cleaned_data'"
Admin
Admin操作中添加中文信息,保存有warnning。
中文乱码或出错

"object has no attribute 'cleaned_data'"

看看,是否你的from还没有验证,如果验证正确就会有 cleaned_data 属性:

 35     if request.method == "POST":
 36         form = AddPostForm(data=request.POST)
 37         if form.is_valid():
 38             name = form.cleaned_data["name"]
 39             body = form.cleaned_data["body"]
 40             ip = request.META.get("REMOTE_ADDR", None)
 41
 42             post = Post(name=name,body=body,ip=ip)
 43             post.save()

注意, form.is_valid() 是调用实例的一个方法,如果写作 form.is_valid 就总是 True !

Admin

Admin操作中添加中文信息,保存有warnning。

Django的ORM对象存储中文的时候总是发出waring: Incorrect string value:'\xB9\xD8\xD3\xF" for ...

第一步 : 修改/etc/mysql/my.cnf

  1. 找到客户端配置[client] 在下面添加
default-character-set=utf8
  1. 在找到[mysqld] 添加
default-character-set=utf8
init_connect='SET NAMES utf8'
#(设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
  1. 修改好后,重新启动mysql 即可,查询一下show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

第二步 : 删除已有的数据表,然后重新创建你的数据表就可以了。

注意 如果我们在空间上部署,通常不需要也不能修改mysql配置,一般都用 utf8作为标准配置,只要导入我们的utf8给是数据库就可以。

中文乱码或出错

Django 默认使用 UTF-8 字符, mysql 默认使用 litan1 字符集。我们需要修改 my.conf ,配置 default charset,然后重建数据库。就可以使用中文了!

参考 FAQ 中的 Admin 错误。