• Django 版本报错记录


    前提:使用Django框架开发,一开始使用Django3.2

    报错一:在使用jsonfield中的JSONField时报错
     File "/data/app/hn_data_collect/hn_data_collect/proxy/models.py", line 6, in <module>
        from .custom_fields import JSONField
      File "/data/app/hn_data_collect/hn_data_collect/proxy/custom_fields.py", line 2, in <module>
        from jsonfield import JSONField as upstream_JSONField
      File "/data/Envs/hn_data_collect/lib/python3.6/site-packages/jsonfield/__init__.py", line 3, in <module>
        from .fields import JSONField
      File "/data/Envs/hn_data_collect/lib/python3.6/site-packages/jsonfield/fields.py", line 11, in <module>
        from django.utils import six
    ImportError: cannot import name 'six'
    

    进过排查发现:Django3无法导入six

    解决方法:

    from django.utils import six
    

    改为

    import six
    

    因为我的项目的特殊性,我将Django3.2改为Django2.2, 问题也能解决。

    报错二:使用外键时报错
    project = models.ForeignKey(Project)
    

    错误信息如下:

    TypeError: __init__() missing 1 required positional argument: 'on_delete'
    

    经过排查:django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常。

    解决方法如下:

    
    project = models.ForeignKey(Project, on_delete=models.CASCADE)
    
    

    同样因为项目的特殊性,我将Django2.2改为Django1.11, 问题也能解决。

    报错三:改为Django1.11时,path引入报错

    from django.urls import path, include
    

    改为

    from django.conf.urls import url, include
    

    原因:django1.11版本时,配置路由一直都是再用url方法,只要升到Django2才能使用path。

  • 相关阅读:
    qs.js库 使用方法
    Python的装饰器
    Html常用标记总结
    SoapUI、Jmeter、Postman三种接口测试工具的比较
    WebService发布协议--SOAP和REST的区别
    Redis简介
    linux搭建svn服务并手动同步代码到web目录和自动更新
    标签有关用法以及锚点定位;
    DevOps简单介绍
    BAT 批处理脚本教程
  • 原文地址:https://www.cnblogs.com/wangyingblock/p/16337201.html
Copyright © 2020-2023  润新知