ฉันจะอ้างอิงตัวแปรการตั้งค่า Django ใน models.py ของฉันได้อย่างไร


124

นี่เป็นคำถามเริ่มต้นมาก แต่ฉันนิ่งงัน ฉันจะอ้างอิงตัวแปรการตั้งค่า Django ใน model.py ของฉันได้อย่างไร

NameError: name 'PRIVATE_DIR' is not defined

ยังได้ลองสิ่งอื่น ๆ อีกมากมายรวมถึง settings.PRIVATE_DIR

settings.py:

PRIVATE_DIR = '/home/me/django_projects/myproject/storage_dir'

models.py:

# Problem is here.
from django.core.files.storage import FileSystemStorage

fs = FileSystemStorage(location=PRIVATE_DIR)

class Customer(models.Model): 
    lastName = models.CharField(max_length=20) 
    firstName = models.CharField(max_length=20) 
    image = models.ImageField(storage=fs, upload_to='photos', blank=True, null=True)

อะไรคือวิธีที่ถูกต้องในการทำเช่นนี้?


7
from django.conf import settings- docs.djangoproject.com/th/dev/topics/settings/…
wkl

คำตอบ:


275

ลองใช้สิ่งนี้: from django.conf import settingsจากนั้น settings.VARIABLEเพื่อเข้าถึงตัวแปรนั้น


16
บางสิ่งบางอย่างที่เกี่ยวข้อง: ถ้าคุณมีหลายกรณีของเนื่องจากโครงการที่นำไปใช้ในสภาพแวดล้อมหลายไม่พยายามที่จะนำเข้าจากsettings_something.py app.settingsตัวแปรที่เขียนทับในไฟล์อื่น ๆ จะไม่มีผล ใช้การนำเข้าที่กล่าวถึงในคำตอบนี้เสมอ ฉันใช้เวลาสองสามชั่วโมงกว่าจะรู้ว่าเกิดอะไรขึ้นในโครงการของฉัน
Ev.

1
ใช้งานได้หากมีการกำหนดค่าอย่างถูกต้อง: ด้วยตัวแปรสภาพแวดล้อม DJANGO_SETTINGS_MODULE หรือด้วยพารามิเตอร์บรรทัดคำสั่ง Manage.py --settings = .. อ่านเพิ่มเติมใน docs: docs.djangoproject.com/en/2.0/topics/settings
mirek

VAR ควรเป็นทุนหลังมิฉะนั้นจะใช้ไม่ได้
Saurabh Chandra Patel

91
from django.conf import settings

PRIVATE_DIR = getattr(settings, "PRIVATE_DIR", None)

สถานที่ที่ว่าNoneคุณจะใส่ค่าเริ่มต้นสำหรับกรณีตัวแปรไม่ได้กำหนดไว้ในการตั้งค่า

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