Django เวอร์ชันใหม่ 3.1 ไฟล์การตั้งค่ามีการเปลี่ยนแปลงบางอย่าง

Aug 16 2020

ใน Django เวอร์ชัน 3.1 ใหม่ไฟล์การตั้งค่ามีการเปลี่ยนแปลงบางอย่างและฉันมาถามว่าฉันต้องดำเนินการตั้งค่าไฟล์คงที่ของฉันอย่างไร? วิธีที่ฉันมักจะไม่ได้ผลมากกว่า

เวอร์ชันล่าสุด:

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

เวอร์ชัน 3.1:

from pathlib import Path
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent

ฉันมักจะตั้งค่าไฟล์คงที่ของฉันดังนี้:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root')

ถ้าฉันใส่import osพินัยกรรม แต่เป็นการปฏิบัติที่ถูกต้องหรือไม่? แนวทางปฏิบัติที่ดีที่สุดในการตั้งค่านี้คืออะไร? ขอขอบคุณ?

คำตอบ

6 Roham Aug 16 2020 at 18:59

การเปลี่ยนแปลงนี้ทำให้คุณกำหนดSTATICและMEDIAตัวแปรได้ง่ายขึ้นมาก คุณไม่จำเป็นต้องนำเข้าosเพื่อจุดประสงค์นี้และสิ่งที่คุณต้องมีคือเพิ่มรหัสต่อไปนี้ในsettings.py:

BASE_DIR = Path(__file__).resolve(strict=True).parent.parent # which shows the root directory of your project

STATIC_ROOT = BASE_DIR / 'static' # is equal to os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'

MEDIA_ROOT = BASE_DIR / 'media' # is equal to os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
Ankit Nov 17 2020 at 13:44
STATIC_ROOT = BASE_DIR.parent / "static_cdn"

ลองทำเช่นนี้หากคุณต้องการเพิ่ม STATIC_ROOT ของคุณภายในไดเร็กทอรีสภาวะแวดล้อม