2012-06-26 9 views
23

Bir projeye özgü basit bir kuyruk hizmeti uygulamak istiyorum. Kod, Django dizin yapısında nereye gitmeli?Django dizin yapısı?

anda yapısı şöyledir:

sound/ 
    __init__.py 
    models.py 
    tests.py 
    views.py 
    static 

[değiştir] Yukarıdaki direcotry yapısı içinde oluşturulan sıra hizmet kodunu nereye yerleştirileceğini soruyorum. Yeni bir dizin oluşturmalı mıyım?

+0

olası yinelenen: // stackoverflow. com/sorular/2282034/web uygula tion-django-tipik-proje-klasör-yapısı –

+0

Bu 'ses 'uygulama klasörünün nereye yerleştirileceğini mi soruyorsunuz? – jdi

cevap

61

Ortak yapılar Django 1.3 olarak

project_root/ 
    project_name/ 
     media/ 
     static/ 
      some_app/css/app.css # overriding an app css file from project level 
      css/ 
       project.css 
     static_root/ # in production using the collectstatic command 
     templates/some_app/foo.html # overriding some_app at project level 
       /admin/some_app/some_model/change_list.html 
       # overriding admin changelist for some_app.models.some_model 
     settings/ 
      __init__.py 
      base.py # settings common to all instances of the project 
      dev.py 
      staging.py 
      test.py 
      prod.py 
     urls.py 
    some_app/ 
     static/ 
      css/ 
       app.css 
     templates/some_app/foo.html 
     urls.py 
     views.py 
     models.py 
    manage.py 

Django 1.4+ yılında

ve önceki

http
project_root/ 
    some_app/ 
     templates/some_app/foo.html 
     static/ 
      css/ 
       app.css 
     urls.py 
     views.py 
     models.py 
    media/ 
    static/ 
     some_app/ 
      css/ 
       app.css # overriding an app css file from project level 
     css/ 
      project.css 
    static_root/ (in production) 
    templates/some_app/foo.html # overriding some_app at project level 
      /admin/some_app/some_model/change_list.html 
      # overriding admin changelist for some_app.models.some_model 
    settings/ 
     __init__.py 
     base.py # settings common to all instances of the project 
     dev.py 
     staging.py 
     test.py 
     prod.py 
    urls.py 
    manage.py 

Alternatif yaklaşım

project_root/ 
    .gitignore 
    README.md 
    docs/ 
    venv/ 
    src/ 
     main/ 
      media/ 
      static/ 
       some_app/css/app.css # overriding an app css file from project level 
       css/ 
        project.css 
      static_root/ # in production using the collectstatic command 
      templates/some_app/foo.html # overriding some_app at project level 
        /admin/some_app/some_model/change_list.html 
        # overriding admin changelist for some_app.models.some_model 
      settings/ 
       __init__.py 
       base.py 
       dev.py 
       staging.py 
       test.py 
       prod.py 
      urls.py 
     some_app/ 
      static/ 
       css/ 
        app.css 
      templates/some_app/foo.html 
      urls.py 
      views.py 
      models.py 
     manage.py 
     wsgi.py 
+1

Şablonları nereye eklersiniz? Uygulama başına – starsinmypockets

+1

@starsinmypockets, muhtemelen çok fazla stil kullanmadan, varsayılan şablonlarınızı ekleyebilirsiniz. Proje düzeyinde bunları geçersiz kılın, örneği şablonlarla güncelledim. –

+0

Şablonları proje düzeyinde neden geçersiz kıldınız? –

1

Veritabanını kullanmanız gerekiyorsa, veri modellerini models.py'ye eklemelisiniz. Programınız için, onu ne zaman ve nerede kullanmak istediğinizi ithal edeceğiniz yeni python dosyalarında (ör. Queuing.py) yazmanızı tavsiye ederim. Sadece bunun için başka bir django uygulaması oluşturabilirsiniz.

+1

_Sadece bunun için başka bir django uygulaması oluşturabilirsiniz. Bu iyi bir öneri değildir. Servis kodu MVC'den ayrılmalıdır. Genel olarak, sadece başka bir uygulama değil. –