แนวปฏิบัติที่เหมาะสมที่สุดสำหรับโครงสร้างไดเรกทอรีทำงานของโครงการ Django


175

ฉันรู้ว่าจริงๆแล้วมันไม่มีทางที่ถูกต้อง อย่างไรก็ตามฉันพบว่ามันยากที่จะสร้างโครงสร้างไดเรกทอรีที่ทำงานได้ดีและยังคงสะอาดสำหรับนักพัฒนาและผู้ดูแลระบบทุกคน มีโครงสร้างมาตรฐานบางอย่างในโครงการส่วนใหญ่บน GitHub แต่จะไม่แสดงวิธีการจัดระเบียบไฟล์อื่นและโครงการทั้งหมดในพีซี

วิธีที่สะดวกที่สุดในการจัดระเบียบไดเรกทอรีทั้งหมดเหล่านี้บนเครื่องพัฒนาคืออะไร? คุณตั้งชื่อพวกเขาอย่างไรและคุณเชื่อมต่อและปรับใช้กับเซิร์ฟเวอร์อย่างไร

  • โครงการ (โครงการทั้งหมดที่คุณกำลังทำงานอยู่)
  • ไฟล์ต้นฉบับ (แอปพลิเคชันเอง)
  • สำเนาการทำงานของที่เก็บ (ฉันใช้คอมไพล์)
  • สภาพแวดล้อมเสมือน (ฉันชอบที่จะวางสิ่งนี้ใกล้กับโครงการ)
  • รากคงที่ (สำหรับไฟล์คงที่รวบรวม)
  • media root (สำหรับไฟล์สื่อที่อัพโหลด)
  • README
  • ใบอนุญาต
  • เอกสาร
  • สเก็ตช์
  • ตัวอย่าง (โครงการตัวอย่างที่ใช้แอปพลิเคชันที่จัดทำโดยโครงการนี้)
  • ฐานข้อมูล (ในกรณีที่ใช้ sqlite)
  • อะไรก็ได้ที่คุณต้องการสำหรับการทำงานในโครงการให้ประสบความสำเร็จ

ปัญหาที่ฉันต้องการแก้ไข:

  • ชื่อที่ดีของไดเรกทอรีเพื่อให้วัตถุประสงค์ชัดเจน
  • เก็บไฟล์โครงการทั้งหมด (รวมถึง virtualenv) ไว้ในที่เดียวดังนั้นฉันสามารถคัดลอกย้ายเก็บถาวรลบโครงการทั้งหมดหรือประมาณการการใช้พื้นที่ดิสก์ได้อย่างง่ายดาย
  • การสร้างสำเนาของชุดไฟล์ที่เลือกบางชุดเช่นแอปพลิเคชั่นที่เก็บหรือ virtualenv ทั้งหมดในขณะที่เก็บสำเนาอื่นของไฟล์อื่นที่ฉันไม่ต้องการโคลน
  • การปรับใช้ชุดของไฟล์ที่ถูกต้องไปยังเซิร์ฟเวอร์โดยเพียงแค่เลือกหนึ่ง dir

คำตอบ:


257

มี Django สองประเภท "โครงการ" ที่ฉันมีใน~/projects/ไดเรกทอรีของฉันทั้งสองมีโครงสร้างที่แตกต่างกันเล็กน้อย:

  • เว็บไซต์แบบสแตนด์อโลน
  • แอปพลิเคชั่นที่เสียบได้

เว็บไซต์แบบสแตนด์อโลน

โครงการส่วนตัวส่วนใหญ่ แต่ไม่จำเป็นต้องเป็น มันมักจะมีลักษณะเช่นนี้:

~/projects/project_name/

docs/               # documentation
scripts/
  manage.py         # installed to PATH via setup.py
project_name/       # project dir (the one which django-admin.py creates)
  apps/             # project-specific applications
    accounts/       # most frequent app, with custom user model
    __init__.py
    ...
  settings/         # settings for different environments, see below
    __init__.py
    production.py
    development.py
    ...

  __init__.py       # contains project version
  urls.py
  wsgi.py
static/             # site-specific static files
templates/          # site-specific templates
tests/              # site-specific tests (mostly in-browser ones)
tmp/                # excluded from git
setup.py
requirements.txt
requirements_dev.txt
pytest.ini
...

การตั้งค่า

การตั้งค่าหลักคือการใช้งานจริง ไฟล์อื่น ๆ (เช่น. staging.py, development.py) ทุกอย่างนำเข้าเพียงจากproduction.pyและแทนที่เพียงตัวแปรที่จำเป็น

สำหรับแต่ละสภาพแวดล้อมมีไฟล์การตั้งค่าแยกต่างหากเช่น การผลิตการพัฒนา ฉันมีบางโครงการที่ฉันได้ทำการทดสอบ (สำหรับนักทดสอบ), การจัดเตรียม (เพื่อตรวจสอบก่อนการใช้งานครั้งสุดท้าย) และการตั้งค่า heroku (สำหรับการปรับใช้กับ heroku)

ความต้องการ

ฉันต้องการระบุข้อกำหนดใน setup.py โดยตรง เฉพาะที่จำเป็นสำหรับการพัฒนา / ทดสอบสภาพแวดล้อมที่ฉันมีrequirements_dev.txtค่ะ

บริการบางอย่าง (เช่น heroku) จำเป็นต้องมีrequirements.txtในไดเรกทอรีราก

setup.py

setuptoolsมีประโยชน์เมื่อปรับใช้โครงการใช้ มันเพิ่มmanage.pyเข้าPATHมาดังนั้นฉันจึงสามารถเรียกใช้manage.pyโดยตรง (ทุกที่)

แอพเฉพาะโครงการ

ฉันเคยใส่แอพเหล่านี้ลงในproject_name/apps/ไดเรกทอรีและนำเข้าโดยใช้การนำเข้าแบบสัมพัทธ์

ไฟล์เทมเพลต / สแตติก / ภาษา / การทดสอบ

ฉันวางเทมเพลตและไฟล์สแตติกเหล่านี้ลงในแม่แบบส่วนกลาง / ไดเรกทอรีคงที่ไม่ใช่ภายในแต่ละแอพ โดยทั่วไปแล้วไฟล์เหล่านี้จะถูกแก้ไขโดยผู้ที่ไม่สนใจโครงสร้างรหัสโครงการหรือไพ ธ อนเลย หากคุณเป็นนักพัฒนาสแต็กทำงานคนเดียวหรือเป็นทีมเล็ก ๆ คุณสามารถสร้างเทมเพลต / สแตติกไดเรคทอรีต่อแอพได้ มันเป็นเรื่องของรสนิยมจริงๆ

เช่นเดียวกันกับสถานที่แม้ว่าบางครั้งจะสะดวกในการสร้างไดเรกทอรีสถานที่แยก

การทดสอบมักจะดีกว่าที่จะวางในแต่ละแอพ แต่โดยปกติจะมีการทดสอบบูรณาการ / การทำงานจำนวนมากซึ่งทดสอบแอพทำงานร่วมกันมากขึ้นดังนั้นไดเรกทอรีการทดสอบระดับโลกจึงสมเหตุสมผล

ไดเร็กทอรี Tmp

มีไดเร็กทอรีชั่วคราวในรูทโปรเจ็กต์ที่แยกออกจาก VCS มันถูกใช้เพื่อจัดเก็บสื่อ / ไฟล์คงที่และฐานข้อมูล sqlite ในระหว่างการพัฒนา ทุกอย่างใน tmp สามารถลบได้ตลอดเวลาโดยไม่มีปัญหาใด ๆ

virtualenv

ฉันชอบvirtualenvwrapperและวาง venvs ทั้งหมดไว้ใน~/.venvsไดเรกทอรี แต่คุณสามารถวางไว้ข้างในtmp/เพื่อรวมเข้าด้วยกัน

เทมเพลตโครงการ

ฉันได้สร้างเทมเพลตโครงการสำหรับการตั้งค่านี้django-start-template

การปรับใช้

การปรับใช้ของโครงการนี้มีดังต่อไปนี้:

source $VENV/bin/activate
export DJANGO_SETTINGS_MODULE=project_name.settings.production
git pull
pip install -r requirements.txt

# Update database, static files, locales
manage.py syncdb  --noinput
manage.py migrate
manage.py collectstatic --noinput
manage.py makemessages -a
manage.py compilemessages

# restart wsgi
touch project_name/wsgi.py

คุณสามารถใช้rsyncแทนได้gitแต่คุณยังต้องรันชุดคำสั่งเพื่ออัปเดตสภาพแวดล้อมของคุณ

เมื่อเร็ว ๆ นี้ฉันสร้าง[django-deploy][2]แอพขึ้นมาซึ่งอนุญาตให้ฉันเรียกใช้คำสั่งการจัดการเดียวเพื่ออัปเดตสภาพแวดล้อม แต่ฉันใช้มันสำหรับโครงการเดียวเท่านั้นและฉันยังคงทดลองกับมัน

ร่างและร่าง

แบบร่างของเทมเพลตที่ฉันวางไว้ในtemplates/ไดเรกทอรีส่วนกลาง ฉันเดาว่าหนึ่งสามารถสร้างโฟลเดอร์sketches/ในโครงการราก แต่ยังไม่ได้ใช้มัน

แอปพลิเคชั่นที่เสียบได้

แอปเหล่านี้มักเตรียมที่จะเผยแพร่เป็นโอเพนซอร์ส ฉันนำตัวอย่างด้านล่างจากdjango-forme

~/projects/django-app/

docs/
app/
tests/
example_project/
LICENCE
MANIFEST.in
README.md
setup.py
pytest.ini
tox.ini
.travis.yml
...

ชื่อของไดเรกทอรีนั้นชัดเจน (ฉันหวังว่า) ฉันวางไฟล์ทดสอบนอกไดเรกทอรีแอพ แต่มันไม่สำคัญเลย มันเป็นสิ่งสำคัญที่จะให้READMEและเพื่อให้แพคเกจที่มีการติดตั้งได้อย่างง่ายดายผ่านsetup.pypip


ขอบคุณ! ฉันชอบโครงสร้างของคุณ มันทำให้ฉันมีความคิดที่เป็นประโยชน์ จุดที่ดีเกี่ยวกับการใช้ setup.py สำหรับความต้องการและการติดตั้ง Manage.py ลงใน PATH คุณช่วยแสดงให้เห็นว่าคุณทำสิ่งสุดท้ายได้อย่างไร? ยังเป็นจุดที่ดีเกี่ยวกับ 'tmp' dir ฉันอยากจะตั้งชื่อมันว่า 'local' จากนั้นฉันอาจมี 'env', 'tmp' และทุกอย่างที่อยู่ภายใน วิธีนี้จะช่วยแก้ปัญหาการมีข้อตกลงมากเกินไปกับ gitignore ปัญหาใหม่คือชื่อนี้อยู่ใกล้กับ 'ตำแหน่งที่ตั้ง' มากเกินไป อาจเป็นการเหมาะสมที่จะย้าย 'locale' ไปยังแอปหลัก 'project_name' ไม่แน่ใจ ไม่ต้องการเปลี่ยนโครงสร้างเพราะชื่อไม่ดี ข้อเสนอแนะใด ๆ
raacer

เมื่อใช้ setup.py ให้เพิ่มscriptsอาร์กิวเมนต์คำหลัก: github.com/elvard/django-start-template/blob/master/project/… ฉันชอบtmpเพราะมันแนะนำ "บางสิ่งบางอย่างชั่วคราว" ซึ่งสามารถลบได้ทุกเวลา Toplevel localedir ไม่จำเป็นคุณสามารถวางได้ทุกที่ ฉันแค่ชอบมันเพื่อให้สอดคล้องกับแบบคงที่ / แม่แบบ dirs
Tomáš Ehrlich

ข้อกำหนดของฉันสำหรับความสามารถในการทำสำเนาหลายไฟล์ต้นฉบับโดยไม่คัดลอกไฟล์อื่นไม่ได้รับการแก้ไขโดยตรง แต่เป้าหมายยังอาจถูกเก็บถาวรโดยใช้git checkoutหรือยกเว้นเพียงหนึ่ง dir 'tmp' เมื่อทำการโคลนไดเรกทอรีโครงการ ดังนั้นดูเหมือนว่าโครงสร้างของคุณตรงตามข้อกำหนดทั้งหมดและชัดเจนเพียงพอที่จะใช้เป็นประจำโดยไม่ต้องสงสัย ฉันยอมรับคำตอบของคุณ ขอบคุณ.
แข่ง

ขอบคุณ. ฉันยังไม่เข้าใจสิ่งที่คุณหมายถึงโดย "ความสามารถในการทำสำเนาหลายแหล่งของไฟล์โดยไม่ต้องคัดลอกไฟล์อื่น" คำสั่ง rsync Tweaked จะทำ แต่นั่นอาจไม่ใช่สิ่งที่คุณหมายถึง ...
Tomáš Ehrlich

ฉันมักจะสร้างผบ. srcภายในรูทโครงการ นี่เป็นสำเนาการทำงานของไฟล์ต้นฉบับและรูทของที่เก็บ git ฉันสามารถทำให้สำเนาหลายไดเรกทอรีนี้ - src, src.bak, src_tmpและอื่น ๆ dirs ไม่ใช่ repo อื่น ๆ เช่นenv, tmp, media, backupอยู่ในระดับเดียวกัน ดังนั้นฉันสามารถทำได้cp -r src src.bakทุกเวลาที่ฉันต้องการทำการทดสอบกับ git หรือเปรียบเทียบกับเครื่องมือภายนอก ในขณะที่คุณมีไฟล์ในตัวเครื่องอยู่ภายในที่เก็บข้อมูลของคุณฉันมีที่เก็บข้อมูลอยู่ในไฟล์ในเครื่องของฉัน (ในทางกลับกัน) ชื่อที่ดีของฉันsrcdir repoคือ
แข่ง

19

คำตอบของฉันได้รับแรงบันดาลใจจากประสบการณ์การทำงานของตัวเองและส่วนใหญ่ในหนังสือTwo Scoops ของ Djangoที่ฉันขอแนะนำและคุณสามารถหาคำอธิบายโดยละเอียดเกี่ยวกับทุกสิ่งได้ ฉันจะตอบบางประเด็นและการปรับปรุงหรือแก้ไขจะได้รับการต้อนรับ แต่ยังมีมารยาทที่ถูกต้องมากขึ้นเพื่อให้บรรลุวัตถุประสงค์เดียวกัน

โครงการ
ฉันมีโฟลเดอร์หลักในไดเรกทอรีส่วนตัวของฉันที่ฉันดูแลโครงการทั้งหมดที่ฉันกำลังทำงานอยู่

ซอร์สไฟล์
ฉันใช้รูทโปรเจ็กต์ django เป็นรูทที่เก็บของโปรเจ็กต์ของฉัน แต่ในหนังสือแนะนำให้แยกทั้งสองอย่าง ฉันคิดว่านี่เป็นวิธีที่ดีกว่าดังนั้นฉันหวังว่าจะเริ่มการเปลี่ยนแปลงอย่างต่อเนื่องในโครงการของฉัน

project_repository_folder/
    .gitignore
    Makefile
    LICENSE.rst
    docs/
    README.rst
    requirements.txt
    project_folder/
        manage.py
        media/
        app-1/
        app-2/
        ...
        app-n/
        static/
        templates/
        project/
            __init__.py
            settings/
                __init__.py
                base.py
                dev.py
                local.py
                test.py
                production.py
            ulrs.py
            wsgi.py

Repository
Git หรือ Mercurial ดูเหมือนจะเป็นระบบควบคุมเวอร์ชันยอดนิยมในหมู่นักพัฒนา Django และเป็นที่นิยมมากที่สุดบริการโฮสติ้งสำหรับการสำรองข้อมูลGitHubและBitbucket

สภาพแวดล้อมเสมือน
ฉันใช้ virtualenv และ virtualenvwrapper หลังจากติดตั้งอันที่สองคุณจะต้องตั้งค่าไดเรกทอรีทำงานของคุณ Mine อยู่ในไดเรกทอรี/ home / envsของฉันตามที่แนะนำในคู่มือการติดตั้ง virtualenvwrapper แต่ฉันไม่คิดว่าสิ่งที่สำคัญที่สุดคือวางไว้ที่ไหน สิ่งที่สำคัญที่สุดเมื่อทำงานกับสภาพแวดล้อมเสมือนจริงคือทำให้ไฟล์ requirements.txt เป็นปัจจุบันอยู่เสมอ

pip freeze -l > requirements.txt 


โฟลเดอร์โครงการแบบคงที่


โฟลเดอร์โครงการรูทสื่อ

README
Repository root

LICENSE
Repository root


รากที่เก็บเอกสาร แพ็คเกจหลามนี้สามารถช่วยให้คุณจัดการเอกสารของคุณได้ง่ายขึ้น:

สเก็ตช์

ตัวอย่าง

ฐานข้อมูล


ขอบคุณสำหรับการแบ่งปันประสบการณ์ของคุณ มีไดเรกทอรี 'project *' จำนวนมากในโครงสร้างของคุณ คุณอาจไม่ใช้ชื่อดังกล่าวในชีวิตจริงใช่ไหม สมมติว่าเรามีโครงการ 'todo' คุณตั้งชื่อ dirs เหล่านี้ได้อย่างไรในกรณีเช่นนี้? ปัญหาที่ฉันเห็นในโครงสร้างปัจจุบันของคุณคือการผสมที่เก็บกับไฟล์ที่ไม่ใช่ที่เก็บ (ตามที่คุณระบุไว้ข้างต้น) อาจเป็นเรื่องน่ารำคาญที่จะเพิ่มถังขยะลงใน. gitignore ใช่ไหม? อีกสิ่งที่น่าสงสัยก็คือการรักษา env dir เพื่อให้ห่างไกลจากโครงการของตัวเอง มันสมเหตุสมผลหรือไม่ ทำไมไม่สร้าง ~ / docs, ~ / statics เป็นต้น แม้แต่คอมไพล์ก็ชอบนั่งใกล้ไฟล์ต้นฉบับ
แข่ง

ฉันจะตั้งชื่อพวกเขาว่า: "todo_project" -> todo -> todo (หรืออาจจะ todoapp) ฉันคิดว่านั่นเป็นสิ่งสำคัญที่ทำให้โฟลเดอร์ที่เก็บในรากของลำดับชั้น direcectory แต่เป็นเพียงความคิดเห็นของฉัน เกี่ยวกับไดเร็กทอรีสภาวะแวดล้อมเมื่อคุณต้องการตั้งค่าสภาวะแวดล้อมการใช้งานจริงคุณเพียงพิมพ์: pip install -U -r requirements.txt แต่อย่างที่ฉันพูดไม่มีวิธีแก้ปัญหาสำหรับทุกสิ่ง
คร

ดังนั้นเส้นทางไปยังแอปหลักคือ "projects / todo_project / todo / todo" คำว่า "project" ทำซ้ำสองครั้งและคำว่า "todo" ทำซ้ำสามครั้ง ดูเหมือนว่า "โครงการ / โครงการ / my_project / project_dir / โครงการ / โครงการ" ชื่อมีความชัดเจนมาก นี่เป็นหนึ่งในปัญหาสำคัญที่ฉันพยายามแก้ไขในโครงสร้างไดเรกทอรีของฉัน ฉันต้องการตั้งชื่อไดเรกทอรีเพื่อให้ง่ายต่อการเข้าใจลำดับชั้น แล้ว repository รูทคุณช่วยอธิบายได้ไหมว่าทำไมมันถึงสำคัญ คุณสามารถอธิบายสิ่งที่ดีเกี่ยวกับการป้องกัน envs นอกเหนือจาก dir โครงการหลักได้อย่างไร
raacer

13

ฉันไม่ชอบที่จะสร้างsettings/ไดเรกทอรีใหม่ ฉันเพียงแค่เพิ่มชื่อไฟล์settings_dev.pyและดังนั้นผมจึงไม่ได้มีการแก้ไขsettings_production.py BASE_DIRวิธีการด้านล่างเพิ่มโครงสร้างเริ่มต้นแทนการเปลี่ยน

mysite/                   # Project
    conf/
        locale/
            en_US/
            fr_FR/
            it_IT/
    mysite/
        __init__.py
        settings.py
        settings_dev.py
        settings_production.py
        urls.py
        wsgi.py
    static/
        admin/
            css/           # Custom back end styles
        css/               # Project front end styles
        fonts/
        images/
        js/
        sass/
    staticfiles/
    templates/             # Project templates
        includes/
            footer.html
            header.html
        index.html
    myapp/                 # Application
        core/
        migrations/
            __init__.py
        templates/         # Application templates
            myapp/
                index.html
        static/
            myapp/
                js/  
                css/
                images/
        __init__.py
        admin.py
        apps.py
        forms.py
        models.py
        models_foo.py
        models_bar.py
        views.py
    templatetags/          # Application with custom context processors and template tags
        __init__.py
        context_processors.py
        templatetags/
            __init__.py
            templatetag_extras.py
    gulpfile.js
    manage.py
    requirements.txt

ผมคิดแบบนี้:

    settings.py
    settings_dev.py
    settings_production.py

ดีกว่านี้:

    settings/__init__.py
    settings/base.py
    settings/dev.py
    settings/production.py

แนวคิดนี้ใช้กับไฟล์อื่นเช่นกัน


ฉันมักจะวางnode_modules/และbower_components/ในไดเรกทอรีโครงการภายในstatic/โฟลเดอร์เริ่มต้น

บางครั้งvendor/ไดเรกทอรีสำหรับ Git Submodules แต่โดยปกติฉันวางไว้ในstatic/โฟลเดอร์


4

นี่คือสิ่งที่ฉันติดตามบนระบบของฉัน

  1. โครงการทั้งหมด : มีความเป็นไดเรกทอรีโครงการในบ้านของฉันโฟลเดอร์~/projectsคือ โครงการทั้งหมดอยู่ในนั้น

  2. โครงการส่วนบุคคล : ฉันติดตามเทมเพลตโครงสร้างแบบมาตรฐานที่นักพัฒนาหลายคนเรียกว่าdjango-skelสำหรับแต่ละโครงการ โดยทั่วไปจะดูแลไฟล์สแตติกและไฟล์มีเดียทั้งหมดของคุณและทั้งหมด

  3. สภาพแวดล้อมเสมือนจริง : ฉันมีvirtualenvs โฟลเดอร์ภายในบ้านของฉัน~/virtualenvsในการจัดเก็บสภาพแวดล้อมเสมือนทั้งหมดในระบบเช่น สิ่งนี้ทำให้ฉันมีความยืดหยุ่นที่ฉันรู้ว่าสภาพแวดล้อมเสมือนจริงทั้งหมดที่ฉันมีและสามารถใช้งานได้ง่าย

3 ข้างต้นเป็นพาร์ติชันหลักของสภาพแวดล้อมการทำงานของฉัน

ส่วนอื่น ๆ ทั้งหมดที่คุณกล่าวถึงส่วนใหญ่ขึ้นอยู่กับโครงการพื้นฐาน (เช่นคุณอาจใช้ฐานข้อมูลที่แตกต่างกันสำหรับโครงการที่แตกต่างกัน) ดังนั้นพวกเขาจึงควรอาศัยอยู่ในโครงการส่วนตัวของพวกเขา


ขอบคุณ. อาจเป็นเรื่องน่ารำคาญที่จะเพิ่มถังขยะลงใน. gitignore เมื่อผสมที่เก็บกับไฟล์ที่ไม่ใช่ที่เก็บ มันไม่ได้เป็น? บางโครงการของฉันมีไฟล์และ dirs สูงถึงสิบไฟล์ดังนั้นมันทำให้ฉันมีปัญหาจริงๆ อีกสิ่งที่น่าสงสัยก็คือการรักษา env dir เพื่อให้ห่างไกลจากโครงการของตัวเอง ความยืดหยุ่นในการแก้ปัญหาดังกล่าวคืออะไร? ทำไมไม่สร้าง ~ / docs, ~ / statics เป็นต้น แม้แต่คอมไพล์ก็ชอบนั่งใกล้ไฟล์ต้นฉบับ ฉันคิดว่าความยืดหยุ่นคือเมื่อฉันสามารถคัดลอก / ย้าย / เก็บถาวร / ลบไดเรกทอรีโครงการทั้งหมดรวมถึง virtualenv และสามารถรักษา envs หลาย ๆ ตัวไว้ในโครงการเดียวได้อย่างง่ายดาย
raacer

4

ตามโครงงานโครงกระดูก Django โครงสร้างไดเรกทอรีที่เหมาะสมที่สามารถติดตามได้คือ:

[projectname]/                  <- project root
├── [projectname]/              <- Django root
   ├── __init__.py
   ├── settings/
      ├── common.py
      ├── development.py
      ├── i18n.py
      ├── __init__.py
      └── production.py
   ├── urls.py
   └── wsgi.py
├── apps/
   └── __init__.py
├── configs/
   ├── apache2_vhost.sample
   └── README
├── doc/
   ├── Makefile
   └── source/
       └── *snap*
├── manage.py
├── README.rst
├── run/
   ├── media/
      └── README
   ├── README
   └── static/
       └── README
├── static/
   └── README
└── templates/
    ├── base.html
    ├── core
       └── login.html
    └── README

อ้างถึงhttps://django-project-skeleton.readthedocs.io/en/latest/structure.htmlสำหรับโครงสร้างไดเรกทอรีล่าสุด


7
ฉันเกลียดวิธีการ [projectname] / [projectname]!)
raacer

1
django-project-Skeleton ไม่ได้เป็น "เอกสาร Django" มันจะแม่นยำกว่าถ้าพูดว่า "ตามโครงการโครงกระดูกโครงกระดูก ... "
David Winiecki

0

คุณสามารถใช้https://github.com/Mischback/django-project-skeleton repository ได้

เรียกใช้คำสั่งด้านล่าง:

$ django-admin startproject --template=https://github.com/Mischback/django-project-skeleton/archive/development.zip [projectname]

โครงสร้างเป็นดังนี้:

[projectname]/                  <- project root
├── [projectname]/              <- Django root
   ├── __init__.py
   ├── settings/
      ├── common.py
      ├── development.py
      ├── i18n.py
      ├── __init__.py
      └── production.py
   ├── urls.py
   └── wsgi.py
├── apps/
   └── __init__.py
├── configs/
   ├── apache2_vhost.sample
   └── README
├── doc/
   ├── Makefile
   └── source/
       └── *snap*
├── manage.py
├── README.rst
├── run/
   ├── media/
      └── README
   ├── README
   └── static/
       └── README
├── static/
   └── README
└── templates/
    ├── base.html
    ├── core
       └── login.html
    └── README
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.