看完這篇,你還敢貿然升級Django3嗎?django2升級django3的坑

django 是世界上最好的web框架,並在四月六號正式升級爲 django3.2 ,這是 djangolts 版本
image.png
若是你打算從 django2.2 升級到 django3.2 那這篇文章很適合你,由於我幫你踩了不少坑。css

![上傳中...]()
image.pnghtml

├─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文件夾中python

可是在django3中這樣作會遇到以下報錯web

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.

報錯緣由

待填django

解決辦法

apps.appname.apps.py處的name屬性修改成apps.appnameapp

默認是這樣,可是會報錯框架

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

修改成spa

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

templates沒有提示

問題描述

按照習慣會在根目錄下建立一個templates文件夾,在文件夾中方式公共的模板,例如 base.htmlcode

可是此處遇到了一個問題,就是pycharm沒法識別django3下的templates的內容(app下的templates是能夠的,根目錄的不行)htm

問題緣由

django2BASE_DIR 使用 os 模塊生成,而在 django3 中改爲了 pathlib 模塊的 Path 類,生成的BASE_DIR 也從字符串變成了 WindowsPath 類實例,所以 pycharm 沒法識別(獲取將來的pycharm版本會支持)
image.png

解決辦法

手動改回 os 模塊

相關文章
相關標籤/搜索