关于python:看完这篇你还敢贸然升级Django3吗django2升级django3的坑

8次阅读

共计 1854 个字符,预计需要花费 5 分钟才能阅读完成。

django 是世界上最好的 web 框架,并在四月六号正式降级为 django3.2,这是 djangolts 版本

如果你打算从 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
├─templates

apps 命令

问题形容

我喜爱将创立的 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 是能够的,根目录的不行)

问题起因

django2BASE_DIR 应用 os 模块生成,而在 django3 中改成了 pathlib 模块的 Path 类,生成的BASE_DIR 也从字符串变成了 WindowsPath 类实例,因而 pycharm 无奈辨认(获取将来的 pycharm 版本会反对)

解决办法

手动改回 os 模块

正文完
 0