测试用例 写入数据库是汉字 查询数据时变为问号 数据库已设置utf-8格式
来源:7-14 模型类和视图的测试用例
慕容7472185
2021-03-02
编写测试用例时,存入数据库的数据是汉字,查询数据时汉字变成了问号,数据库也是utf8格式,而且在view视图中查询出的结果均是汉字。
其他语句都顺利通过,唯独
assert Article.objects.get_published()[0].title == "第一篇文章"
这句代码执行失败,原因是查询数据时汉字变为了问号。
Article.objects.get_published()[0].title
这句同样的代码,在view视图函数中查询出的结果显示是中文汉字,
试了好多方法最终汉字都是显示问号。
麻烦老师给讲解下,谢谢。
1回答
-
您好,函数是这样的
@python_2_unicode_compatible
class ArticleQuerySet(models.query.QuerySet):
"""自定义QuerySet,提高模型类的可用性"""
def get_published(self):
"""返回已发表的文章"""
return self.filter(status="P").select_related('user')my.cnf文件是这样的,默认设置
[zanhu@zanhu ~]$ cat /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/8.0/en/server-configuration-defaults.html
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove the leading "# " to disable binary logging
# Binary logging captures changes between backups and is enabled by
# default. It's default setting is log_bin=binlog
# disable_log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
#
# Remove leading # to revert to previous value for default_authentication_plugin,
# this will increase compatibility with older clients. For background, see:
# https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_default_authentication_plugin
# default-authentication-plugin=mysql_native_password
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
创建数据库的时候是 CREATE DATABASE zanhu charset utf8;
022021-03-03
相似问题