Django 文件夹结构



Django 应用程序 (1.7) 中的文件夹的良好结构(最佳实践)是什么?我不确定将静态数据和文件上传放在哪里。

在我的所有项目中,结果都不同,但目前我有这样的东西(我省略了一些明显的文件夹/文件):

project/
   bin/
   include/
    ...   
   src/
     manage.py
     main/
      - settings.py
      - urls.py
     signup/
   static/
      static_/
        + css
        + img
        + js
      static/
      templates/
       - index.html
       - base.html 
       - ...
      uploads/

而且,我更喜欢看到例如 url site.com/css/file.css而不是 site.com/static/css/file.css ,但不知何故,这比看起来更复杂。如何做到这一点?

我在setting.py中使用以下内容(目前使用 Django v1.6.8)

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#TEMPLATE_DIRS = (os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), "static", "templates"),)
TEMPLATE_DIRS = (
os.path.join(BASE_DIR,  'templates'),)

这给了我一个文件夹布局

project/
    manage.py
    project_app/
        - settings.py
        - urls.py        
    someother_app/
        - admin.py
        - models.py
        - views.py
        static/
            css/
            javascript/
     templates
         admin/
         someother_app/
             - base.html
             - index.html
    media/

我不确定你说site.com/css/file.css是什么意思. 类似于<link rel="stylesheet" href="{{ STATIC_URL }}css/jquery.asmselect.css">base.html <head>中使用 Django 框架来呈现您的.css文件。为什么不使用那里的东西? 节省时间和精力。

汤米。

以下是 Django 两勺 一书中对 Django 项目布局的推荐:

repo_root/
    .gitignore
    Makefile
    docs/
    README.rst
    requirements.txt
    django_project_root/
        manage.py
        media/
        django_app_root/
        static/
        templates/
        config/
            __init__.py
            settings/
            urls.py
            wsgi.py

并被视为三级项目布局,其中:

  • 顶级 (repo_root):部署所需的高级文件
  • 第二级(django_project_root):实际的 Django 项目
  • 第三级(config):django 项目配置文件。

关于文件上传,我会将它们从浏览器直接上传到Amazons S3文件存储(或类似服务)。否则,您将占用带宽和 CPU 时间。或者,如果您必须在媒体文件夹 ^ 中,出于安全原因,请验证上传的文件类型。

最新更新