• Django常见错误信息汇总及解决方案


    摘要:最近学习Django中,自己随便写写还是碰到了挺多问题,不过貌似都是比较常见,还能顺利解决。现在写下来,也许以后会忘记,也许能帮上碰到同样问题的

    小编我前面已经写过一篇关于Django常见错误的文章了,该文比较适合新手阅读,防止学习Django过程中入坑。今天小编我要总结实际Django开发过程中和debug过程中经常碰到的错误信息以及如何解决它们。本文适合所有Python Web开发学习者和工作者,值得加入你的收藏。Django之所以优秀,就是因为它在开发环境下提供了丰富的debug报错信息,从而减少了在生产环境下产生bug。本文会尝试着为那些错误信息提供解决方案。

     

    错误1

    ---------------------------------------------------------------

    You are trying to add a non-nullable field 'mod_date' to book without a default; we can't do that (the database needs something to populate existing rows).

    Please select a fix:

     1) Provide a one-off default now (will be set on all existing rows with a null value for this column)

     2) Quit, and let me add a default in models.py

    -----------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因是因为你修改了模型models.py,增加了一些字段,却没有提供默认值。对于新增的字段,你必需要设置其为null或者提供默认值。本例中,你可以将新增字段改为mod_date = models.DateField(null=True), 然后重新运行python manage.py makemigrationspython manage.py migrate

    错误2

    ---------------------------------------------------------------------

    ImportError: No module named 'MySQLdb'

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因是因为试图使用MySQL作为数据库,却没有安装相应模块。解决方案如下:

    • 通过pip安装pymysql模块

    • 在app的__init__.py文件中写入以下内容

            import pymysql  

            pymysql.install_as_MySQLdb()

     

    错误3

    ---------------------------------------------------------------------

    RuntimeWarning: DateTimeField received a naive datetime

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因在于你没有在settings.py里设置时区,Django不知道提供哪个时区的时间好。小编强烈建议你给所有的Django项目设置时区。如果你要使用中国时间,可以使用TIME_ZONE = 'Asia/Shanghai'请注意: 在Django的配置文件里有两个配置参数是跟时间与时区有关的,分别是TIME_ZONEUSE_TZ

    • 如果USE_TZ设置为True时,Django会使用系统默认设置的时区,即芝加哥时间America/Chicago,此时的TIME_ZONE不管有没有设置都不起作用。

    • 如果USE_TZ 设置为False,而TIME_ZONE设置为None,则Django还是会使用默认的America/Chicago时间。

    • TIME_ZONE设置为其它时区的话,则还要分情况。如果是Windows系统,则TIME_ZONE设置是没用的,Django会使用本机的时间。如果为其他系统,则使用该时区的时间,入设置USE_TZ = FalseTIME_ZONE = 'Asia/Shanghai', 则使用上海的UTC时间。

    错误4

    ---------------------------------------------------------------------

    UnorderedObjectListWarning: Pagination may yield inconsistent results with an unordered object_list:

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因是obj.objects.all()的列表是无序的,使用Paginator类分页会出错,因为每次分页第一页都可能出现不同的结果。解决方案是在查询结果上加上order_by排序, 比如obj.objects.all().order_by("id")。

     

    错误5

    ---------------------------------------------------------------------

    NoReverseMatch error at /xxx/

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因是命名url反向解析还需要你提供参数,而且参数数量也要一致。比如你直接使用{% url "product_detail" %}肯定会出现这个错误,因为你忘了提供product.id啊。如果你不提供id,Django怎么知道这个url指向哪个产品详情呢? 正确的用法是使用{% url "product_detail" product.id %}。 如果你要同时传递两个或多个参数,你可以参照{% url "product_detail" product.id shop.id %}

     

    错误6

    ---------------------------------------------------------------------

    TemplateDoesNotExist at /xxx/

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因是你尚未在templates目录创建相应的模板,添加上就好了。

     

    错误6

    ---------------------------------------------------------------------

     ImportError: cannot import name 'Thing2Literal'  AttributeError: module 'pymysql' has no attribute 'install_as_MySQLdb''

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    1. pip uninstall PyMySQL
    2. pip install -U --force-reinstall pymysql

    错误8

    ---------------------------------------------------------------------

    正在更新当中

    ---------------------------------------------------------------------------------

    出现原因和解决方案

    出现这个错误的原因是你尚未在templates目录创建相应的模板,添加上就好了。

     

     

     

  • 相关阅读:
    【贪心+DFS】D. Field expansion
    【贪心+博弈】C. Naming Company
    【dp】E. Selling Souvenirs
    【multimap的应用】D. Array Division
    内存变量边界对齐
    3.8 高级检索方式(二)
    3.7 高级检索方式(一)
    openGL加载obj文件+绘制大脑表层+高亮染色
    3.6 Lucene基本检索+关键词高亮+分页
    3.5 实例讲解Lucene索引的结构设计
  • 原文地址:https://www.cnblogs.com/sq1995liu/p/12985667.html
Copyright © 2020-2023  润新知