我应该如何在Django中构建我的静态应用程序文件?

问题描述:

我正在寻找如何构建我的Django项目的建议。这是我此刻的现有结构:我应该如何在Django中构建我的静态应用程序文件?

project_name 
    - deploy 
    - app_name 
    -- migrations 
    -- templates 
    -- templatetags 
    -- __init__.py 
    -- admin.py 
    -- context_processors.py 
    -- defaults.py 
    -- models.py 
    -- tests.py 
    -- views.py 
    - static 
    -- admin 
    -- app_name 
     --- css 
     --- fonts 
     --- img 
     --- js 
     --- tinymce 
    - templates 
    - project_name 
    - __init__.py 
    - fabfile.py 
    - manage.py 

我不知道这是更好地在我的应用程序文件夹中的所有静态文件或者他们应该像它在静态文件夹和APP_NAME的那一刻?

或者它是另一种更好的方式来构建我的静态文件?

+0

你应该在应用程序目录中添加'static'文件夹。请参阅官方文档https://docs.djangoproject.com/en/1.4/howto/static-files/ –

将它们放在应用程序目录下名为“static”的目录中。那就是django.contrib.staticfiles.finders.AppDirectoriesFinder寻找他们by default

static/目录内,使用您的应用程序名称创建一个目录。

所以在部署中,当您运行./manage.py collectstatic时,Django会将所有文件复制到settings.STATIC_ROOT中定义的目录中,并且每个应用程序都将其文件存放在其自己的子目录中。

project_name 
- deploy 
- app_name 
    - migrations 
    ... 
    - static 
    - app_name 
     - css 
     - fonts 
     - img 
     - js 
     - tinymce 
    - templates 
    - app_name 
     - item.html 
     - list.html 
- project_name 
- __init__.py 
- manage.py 

另外,根据字体,CSS,你有JS文件的数量,我只是把他们内部app_name/static/app_name/,而不是创建另一个目录级别js/css/。就像他们说的那样,“平坦胜过嵌套”。

+0

谢谢你。我首先尝试了,但没有将结果创建到静态文件夹中。谢谢! –

如果你的所有点大约为静态文件,通过经验法则:

  • 放在你的应用程序,如果他们是特定于应用程序
  • 把他们的依赖(比如,另一个应用程序你应该需要安装在你的django项目中,尽管这个概念并没有被Django强制执行,但是如果你的资产对于许多django应用程序来说是全球性的,那么它是由Python包管理系统(如setuptools)执行的(如果你计划发布你的django应用程序)你有。你也应该释放(如果是这种情况)并在你的django项目中安装依赖项(否则文件将无法访问)。
  • 将它们放在项目的全局静态目录中,如果它们只针对项目。

他们只是提示,但最实践的。只要路径可以通过Django静态文件加载器访问,您可以将它们放在您想要的位置。