apps.py ใน Django 1.9 มีจุดประสงค์อะไร


132

ฉันเพิ่งไปมากกว่าบันทึกประจำรุ่นอัลฟาสำหรับ Django 1.9และเห็นว่าstartappคำสั่งการจัดการในขณะนี้เพิ่มไฟล์ apps.py

ไฟล์นี้มีจุดประสงค์อะไร เอกสาร startAppไม่ได้ให้ข้อมูลเพิ่มเติม

คำตอบ:


138

วัตถุประสงค์ของapps.pyไฟล์:

ไฟล์นี้สร้างขึ้นเพื่อช่วยให้ผู้ใช้รวมการกำหนดค่าแอปพลิเคชันสำหรับแอป เมื่อใช้สิ่งนี้คุณสามารถกำหนดค่าคุณลักษณะบางอย่างของแอปพลิเคชันได้

จากApplication Configurationเอกสารประกอบ:

อ็อบเจ็กต์คอนฟิกูเรชันแอ็พพลิเคชันเก็บข้อมูลเมตาสำหรับแอ็พพลิเคชัน แอตทริบิวต์บางอย่างสามารถกำหนดค่าได้ในคลาสย่อย AppConfig Django ตั้งค่าอื่น ๆ และอ่านอย่างเดียว

ตัวอย่างจากเอกสาร:

สมมติว่าคุณกำลังสร้างแอปแบบเสียบได้ที่เรียกว่า"Rock ’n’ roll"จากนั้นเพื่อให้ชื่อที่เหมาะสมสำหรับผู้ดูแลระบบเราสามารถดำเนินการดังต่อไปนี้:

ในrock_n_rollแอพเราสร้างRockNRollConfigคลาส AppConfig

#rock_n_roll/apps.py
from django.apps import AppConfig

class RockNRollConfig(AppConfig): # Our app config class
    name = 'rock_n_roll'
    verbose_name = "Rock ’n’ roll"

เราสามารถทำให้แอปพลิเคชันของคุณโหลดAppConfigคลาสย่อยนี้ได้โดยค่าเริ่มต้นโดยระบุdefault_app_configในrock_n_roll/__init__.pyไฟล์

# rock_n_roll/__init__.py    
default_app_config = 'rock_n_roll.apps.RockNRollConfig'

การทำเช่นนี้จะทำให้เกิดการRockNRollConfigที่จะใช้เมื่อมีเพียงINSTALLED_APPS 'rock_n_roll'สิ่งนี้ช่วยให้เราสามารถใช้ประโยชน์จากAppConfigคุณลักษณะต่างๆได้โดยไม่ต้องให้ผู้ใช้อัปเดตINSTALLED_APPSการตั้งค่า


1
น่าเศร้าที่ฉันไม่ได้รับคำตอบจากคุณ
hspandher

3
without requiring our users to update their INSTALLED_APPS setting.: นี่หมายความว่าอย่างไร: โดยทั่วไปถ้าฉันไม่ทำdefault_app_config = 'rock_n_roll.apps.RockNRollConfig'ฉันต้องพูดถึงใน INSTALLED_APPSdefault_app_config = 'rock_n_roll.apps.RockNRollConfig'
Santhosh Yedidi

15

มันเป็นสถานที่แนะนำที่จะนำคุณกำหนดค่าโปรแกรมประยุกต์ ฟีเจอร์นี้มีมาตั้งแต่ 1.7 แต่เพื่อส่งเสริมการใช้งานและเปิดใช้งานการกำหนดค่าที่ง่ายขึ้นapps.pyไฟล์จึงถูกเพิ่มลงในเทมเพลตแอปเริ่มต้น

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