gpt4 book ai didi

Django项目层次结构/组织

转载 作者:行者123 更新时间:2023-12-04 14:34:23 32 4
gpt4 key购买 nike

我是 Django 新手并开始了一个项目,我想以正确的方式去做。

我想知道您认为组织项目的最佳实践是什么。

以下是我的一些问题:

  • 如何将静态资源与 Python 代码分开,以免浪费时间通过 Django 处理静态内容?
  • 由于应用程序是可重用的模块,它们对项目来说并不紧密,所以它们应该位于项目目录中,还是位于包含我所有“自制”应用程序的另一个目录中?
  • 模板被视为静态内容还是动态内容?

  • 这是我当前的文件层次结构:
    webapps/
    myproject/
    apache/
    bin/
    lib/
    templates/
    app1/
    app2/
    src/
    app1/
    app2/
    __init.py
    settings.py
    urls.py
    manage.py
    myproject.wsgi
    admin/
    static/
    css/
    img/

    你怎么看?
    什么会更好?

    谢谢!

    最佳答案

    您的目录结构也可能取决于您使用的 django 版本。如果您使用的是 django 1.3,则处理静态内容略有变化。您的模板也可以单独排列。

    以下仅适用于 django 1.3。

    app 内目录:

    ...
    app1/
    static/
    app1/
    templates/
    app1/
    models.py
    ...
    views.py

    如果您使用新的 django.contrib.staticfiles应用程序,您的设置可能如下所示:
    MEDIA_ROOT = path.join(ROOT_PATH,'uploaded_media/')
    MEDIA_URL = '/uploaded_media/'
    # static content is collected here, and served from here, but don't add stuff manually here! add to staticfiles_dirs
    STATIC_ROOT = path.join(ROOT_PATH, 'collected_static/')
    ADMIN_MEDIA_PREFIX = '/static/admin/'
    STATIC_URL = '/static/'
    # Additional locations of static files
    STATICFILES_DIRS = (
    path.join(ROOT_PATH, 'src/extra_static/'),
    )

    STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    )

    同样,您的模板可以直接从 INSTALLED_APP 加载。 :
    TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader'
    )

    TEMPLATE_DIRS = (
    path.join(ROOT_PATH,'src/templates/'),
    )

    上述两种策略意​​味着模板和静态内容可以存在于其特定的应用程序目录中。在开发中,使用 contrib.staticfiles ,静态内容可以直接从您的应用程序文件夹中提供。在生产中,有一个管理命令收集所有app目录静态内容到 /path/to/project/collected_static/ ,并且您可以将您的 Web 服务器指向该目录以提供静态内容。

    对于预打包的库,使用 virtualenv 和 pip 是个好主意。否则,我喜欢将库保存在 lib 中。项目根目录中的目录。它使引用源代码、模板和静态内容非常方便,而不是安装到 site-packages (尤其是在不使用 virtualenv 时)。

    因此,重新安排您的项目结构:
    webapps/
    myproject/
    apache/
    bin/
    lib/
    collected_static/
    uploaded_media/
    myproject.wsgi
    src/
    templates/ # lib template overrides and site wide templates
    base.html
    lib_1/
    nav.html
    extra_static/
    lib_1/ # libs that dont support django 1.3 static
    js/
    css/
    settings.py
    settingslocal.py # keep developer specific settings here
    urls.py
    manage.py
    app1/
    __init.py
    static/
    app1/
    js/
    css/
    templates/
    app1/

    关于Django项目层次结构/组织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505929/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com