看完这篇,你还敢贸然升级Django3吗?django2升级django3的坑 您所在的位置:网站首页 django22下载 看完这篇,你还敢贸然升级Django3吗?django2升级django3的坑

看完这篇,你还敢贸然升级Django3吗?django2升级django3的坑

2023-09-10 13:40| 来源: 网络整理| 查看: 265

django 是世界上最好的web框架,并在四月六号正式升级为 django3.2 ,这是 django 的 lts 版本如果你打算从 django2.2 升级到 django3.2 那这篇文章很适合你,因为我帮你踩了很多坑。

![上传中...]()

├─apps │ ├─index │ │ ├─migrations │ │ ├─templates │ │ ├─templatetags │ ├─product │ │ ├─migrations │ │ ├─templates │ └─users │ ├─migrations │ ├─templates ├─freshshop │ └─__pycache__ ├─media │ └─product_imgs ├─static │ └─assets │ ├─css │ ├─fonts │ ├─img │ └─js ├─templatesapps命令问题描述

我喜欢将创建的app单独放在一个apps文件夹中

但是在django3中这样做会遇到如下报错

File "C:\Users\17293\AppData\Local\Programs\Python\Python38\lib\site-packages\django\core\management\__init__.py", line 375, in execute autoreload.check_errors(django.setup)() File "C:\Users\17293\AppData\Local\Programs\Python\Python38\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "C:\Users\17293\AppData\Local\Programs\Python\Python38\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "C:\Users\17293\AppData\Local\Programs\Python\Python38\lib\site-packages\django\apps\registry.py", line 91, in populate app_config = AppConfig.create(entry) File "C:\Users\17293\AppData\Local\Programs\Python\Python38\lib\site-packages\django\apps\config.py", line 246, in create raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: Cannot import 'index'. Check that 'apps.index.apps.IndexConfig.name' is correct.报错原因

待填

解决办法

在apps.appname.apps.py处的name属性修改为apps.appname

默认是这样,但是会报错

from django.apps import AppConfig class IndexConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'index'

修改为

from django.apps import AppConfig class IndexConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'apps.index'templates没有提示问题描述

按照习惯会在根目录下创建一个templates文件夹,在文件夹中方式公共的模板,例如 base.html

但是此处遇到了一个问题,就是pycharm无法识别django3下的templates的内容(app下的templates是可以的,根目录的不行)

问题原因

django2 中 BASE_DIR 使用 os 模块生成,而在 django3 中改成了 pathlib 模块的 Path 类,生成的BASE_DIR 也从字符串变成了 WindowsPath 类实例,因此 pycharm 无法识别(或许未来的pycharm版本会支持)

解决办法

手动改回 os 模块



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有