Django 教程 在线

1240Django Admin 管理工具

一个 Contact 类可以有多个 Tag:

关联 contact 外键时会报错:TypeError: __init__() missing 1 required positional argument: 'on_delete'

解决办法:

contact = models.ForeignKey(Contact, on_delete=models.CASCADE)

1239Django 表单

楼上说的中文解析不了的问题我也遇到了,加 u 标记成 unicode 字符即可。

message = '你搜索的内容为: ' + request.GET['q']

改成

message =u '你搜索的内容为: ' + request.GET['q']

1238Django 表单

遇到问题:

执行search请求 响应,出现错误 ,中文解析不了:

'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

解决办法,添加如下代码到 search.py

import sys  
reload(sys)
sys.setdefaultencoding('utf8')

1237Django 模型

$ python manage.py migrate   # 创建表结构

执行上面这句的时候,报错如下:

django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1"))

解决办法:找到 python 目录下的 Lib\site-packages\django\db\backends\mysql\base.py,找到 'DateTimeField': 'datetime(6)', 把 datetime(6) 改成 datetime, 问题解决。

另一种解决办法:升级 MySQL,Django2.1 不支持 MySQL5.6 以下版本了,升级 MySQL 到 5.6 或更高版本即可。

1236Django 模型

问题:使用Django连接数据库MySql8.0.13连接是报错

_mysql_exceptions.OperationalError: (2059, <NULL>)

原因:应该是新版本8.0 新的加密方式导致的问题。

解决:ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'test';更改数据库密码的加密方式