新版博客SEO优化基本完成,新老博客内容正在整合中,保证每篇文章高质量。 SiteMap RSS Github
Django 问题记录
嘉美伯爵   2019年3月20日 16:32   Python   Django   176  

null=True 和 blank=True的区别

  • null 是针对数据库而言,如果 null=True, 表示数据库的该字段可以为空,即在Null字段显示为YES
  • blank 是针对表单的,如果 blank=True,表示你的表单填写该字段的时候可以不填,但是对数据库来说,没有任何影响

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.Did you install mysqlclient?

  • Django<2.0
# 解决:工程目录下,在 __init__.py中加入以下代码
import pymysql
pymysql.install_as_MySQLdb()
  • Django>2.0
# 自Django2.0开始,默认使用mysqlclient连接mysql
pip install mysqlclient

auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes

解决办法:在配置文件中添加:AUTH_USER_MODEL = 'blog.User' 其中blog是应用名,User是模型类名。

Django停止使用RuntimeError:populate()不可重入

  • 修改 wsgi.py 文件
try:
    application = get_wsgi_application()
except Exception:
    # Error loading applications
    if 'mod_wsgi' in sys.modules:
        traceback.print_exc()
        os.kill(os.getpid(), signal.SIGINT)
        time.sleep(2.5)

django.db.utils.OperationalError: (1193, "Unknown system variable 'storage_engine'")

django连接数据库时,配置
"OPTIONS":{"init_command":"SET storage_engine=INNODB;"}

如果mysql数据库的版本是5.6,这句话会抛出如下异常
django.db.utils.OperationalError: (1193, "Unknown system variable 'storage_engine'")

解决办法
"OPTIONS":{"init_command":"SET default_storage_engine=INNODB;"}

Django2 url 改为 re_path

# Django>2(也可使用from django.conf.urls import url)
from django.urls import path, re_path
from django.views.static import serve
from shop.settings import MEDIA_ROOT
re_path(r'media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT})
# Django<2
from django.conf.urls import url, include
from django.views.static import serve
from shop.settings import MEDIA_ROOT
url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT})

参考文档

Django 2.0 path error ?: (2_0.W001) has a route that contains '(?P<', begins with a '^', or ends with a '$'

Django数据库同步异常

django.db.utils.OperationalError: (1193, "Unknown system variable 'storage_engine'")

Django停止使用RuntimeError:populate()不可重入