You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中供视图读取的非代码模板类杂项文件的常规存储位置?

Django中杂项文件(如Excel模板)的约定存储位置

在Django社区里,针对这类仅由后端视图读取、无需模板渲染也不属于代码/前端静态资源的文件,有几种约定俗成的存储方案:

1. App级专属目录(推荐单App使用场景)

在目标App目录下创建专门的子目录,比如resources/、assets/或templates_nonrendered/,用来存放这类模板文件。

示例目录结构(假设App名为reports):

reports/
├── __init__.py
├── views.py
├── models.py
└── resources/
    └── excel_template.xlsx

视图中读取文件的代码示例:

from django.apps import apps
import os
from openpyxl import load_workbook

def generate_excel_view(request):
    app_config = apps.get_app_config('reports')
    template_path = os.path.join(app_config.path, 'resources', 'excel_template.xlsx')
    wb = load_workbook(template_path)
    # 插入数据库数据的逻辑...
    # 生成并返回Excel响应的逻辑...

2. 项目级共享目录(推荐多App共用文件场景)

如果模板文件需要被多个App共享,可在项目根目录下创建全局目录(如project_resources/或shared_assets/),然后在settings.py中添加自定义配置统一管理路径:

# settings.py
import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
RESOURCES_DIR = os.path.join(BASE_DIR, 'project_resources')

视图中调用配置读取文件的示例:

from django.conf import settings
from openpyxl import load_workbook

def generate_excel_view(request):
    template_path = os.path.join(settings.RESOURCES_DIR, 'excel_template.xlsx')
    wb = load_workbook(template_path)
    # 数据插入与响应逻辑...

注意事项

  • 不要放在static/目录:static/是前端可访问的静态资源目录,会被collectstatic工具收集,不适合后端专用模板文件。
  • 避免混入templates/目录:templates/是Django模板引擎的扫描目录,除非文件需要用模板语法渲染,否则单独存放更清晰。
  • 部署时注意权限:确保Django运行进程拥有该目录的读取权限;容器部署时需将目录正确挂载或打包进镜像。

内容的提问来源于stack exchange,提问作者nigel222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 19:36:29