"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
- 找到客户端配置[client] 在下面添加
default-character-set=utf8
- 在找到[mysqld] 添加
default-character-set=utf8 init_connect='SET NAMES utf8' #(设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)
- 修改好后,重新启动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 错误。
