อะไรคือความแตกต่างระหว่าง "from django.conf import settings` และ" import settings "ในโปรเจ็กต์ Django


93

ฉันอ่านว่าคนส่วนใหญ่ทำfrom django.conf import settingsแต่ฉันไม่เข้าใจความแตกต่างเพียงแค่ทำimport settingsในไฟล์โครงการ django ใครสามารถอธิบายความแตกต่าง?


การตั้งค่า django.conf เป็นค่าเริ่มต้นของ django หรือการตั้งค่า "ส่วนกลาง" ซึ่งคุณอาจแทนที่ด้วยการตั้งค่าตามโครงการของคุณเอง
Jingo

7
ไม่เคยใช้รูปแบบที่สอง คนแรกคือคนเดียวที่ถูกต้อง
bruno desthuilliers

2
แต่ทำไมไม่เคยใช้อันที่สอง?
tzenderman

คำตอบ:


111

import settingsจะนำเข้าโมดูล python แรกที่มีชื่อsettings.pyพบsys.pathโดยปกติ (ในการตั้งค่า django เริ่มต้น) อนุญาตให้เข้าถึงเฉพาะไฟล์การตั้งค่าที่ไซต์ของคุณกำหนดซึ่งจะเขียนทับการตั้งค่าเริ่มต้นของ django ( django.conf.global_settings)

ดังนั้นหากคุณพยายามเข้าถึงการตั้งค่า django ที่ถูกต้องซึ่งไม่ได้ระบุไว้ในไฟล์การตั้งค่าของคุณคุณจะได้รับข้อผิดพลาด

django.conf.settingsไม่ใช่ไฟล์ แต่เป็นคลาสที่สร้างนามธรรมของแนวคิดการตั้งค่าเริ่มต้นและการตั้งค่าเฉพาะไซต์ของคุณ Django ยังไม่ตรวจสอบอื่น ๆ from django.conf import settingsเมื่อคุณใช้

นอกจากนี้คุณยังสามารถหาได้ในเอกสาร Django

หวังว่านี่จะช่วยได้


5
import settingsจะนำเข้าโมดูล python แรกที่settings.pyพบในsys.path. นี่อาจไม่ใช่ "ไฟล์การตั้งค่าที่กำหนดโดยไซต์" ซึ่งค้นหาในตัวแปรสภาพแวดล้อม "DJANGO_SETTINGS_MODULE" และอาจเป็นเพียงแพ็กเกจหรือโมดูลหลามใดก็ได้
bruno desthuilliers

@brunodesthuilliers ขอบคุณ. ฉันอัปเดตคำตอบของฉันโดยตระหนักถึงการแก้ไขของคุณ
juliocesar

22

from django.conf import settings เป็นตัวเลือกที่ดีกว่า

ฉันใช้ไฟล์การตั้งค่าที่แตกต่างกันสำหรับโปรเจ็กต์ django เดียวกัน (ไฟล์หนึ่งสำหรับ "live" หนึ่งไฟล์สำหรับ "dev") ไฟล์แรกจะเลือกไฟล์ที่กำลังดำเนินการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.