在实际应用程序目录中包含模板/静态文件的 pip 安装(不仅仅是在站点包目录中)

Posted

技术标签:

【中文标题】在实际应用程序目录中包含模板/静态文件的 pip 安装(不仅仅是在站点包目录中)【英文标题】:A pip install to include template/static files in actually app directory (not just in the site-packages dir) 【发布时间】:2015-02-06 09:32:37 【问题描述】:

我正在尝试从一个主题的 git repo(即 pip install git+https://github.com/username/Test-Theme.git)创建一个 pip install;所以它只包含静态和模板文件。

就在我的“站点包”目录中安装静态和模板文件而言,我的 pip 安装工作正常。我的网站很好地选择了这个主题。我还可以运行“python manage.py collectstatic”将主题中的所有静态文件直接放在我项目的静态文件夹中。但是,该命令不会在该文件夹中创建包含我的模板的模板文件夹。

那么,有没有办法创建一个 pip 安装,其中静态/模板文件也直接放在项目目录中?或者是否有等效于“python manage.py colecstatic”的工具可以收集我的模板文件夹?因此,例如,在 pip 安装后,结构将如下所示,静态和模板文件物理包含在项目文件夹中。

project
   manage.py
   project/
   app-name/
   static/
   templates/

感谢您对此的任何帮助。

更新

因此,使用 Django 的 startproject 模板功能可能是使用一个命令安装所有内容的最佳方式:https://docs.djangoproject.com/en/1.8/ref/django-admin/

类似于 django-admin startproject --template=https://github.com/githubuser/django-project-template/archive/master.zip myproject...

【问题讨论】:

我不鼓励这样做,为什么不简单地 git 克隆那个 repo 到你想要的地方呢?似乎最终你想要在你的文件旁边,因为无论如何你都需要修改它们 嗨,DRC - 感谢您的回复 - 因为我正在为我的同事创建一个“基本主题”,理想情况下,我不希望他们花时间弄清楚模板的位置文件应该存在或需要时间来移动文件(因为 git clone 也将包括父文件夹,对吗?)。所以,我希望能做到这一点,这样他们就可以 pip 安装或收集静态文件,并准备好模板文件放在他们应该至少是我的想法的地方。 为什么不直接利用模板继承机制,让他们做类似% extends 'base-theme/base.html' % 之类的事情呢?我不认为 pip 适合于此,并且创建例如用于在其他人的目录中复制这些文件的自定义命令应该在文件放置和存在方面做出很多假设并且不必要地使事情复杂化,但无论如何它肯定可以完成。你有强烈的理由不使用模板继承吗? 只是这对人们来说是另一个多余的步骤(至少在我的情况下),我想让事情尽可能干净和简单。我想我看待它的一种方式是这样的:如果“python manage.py collectstatic”对于添加静态文件有意义(你不能也对此提出相同的论点吗?为什么有这个命令?为什么不只是 git clone你的静态文件也一样?注意:我的语气不是争论,更多的是大声思考)然后将它也用于模板似乎是有意义的。 对不起,我不明白,额外的步骤是什么?如果人们不应该触及基本主题,为什么您需要将它与其他项目文件一起复制到某个地方?如果他们应该,如果您不使用模板扩展机制并复制文件(可能覆盖自定义文件),您将如何处理主题升级,考虑 django 用户期望的事情,也许您应该修改包括您的主题的问题结构和用户应该如何使用它的用例,或者你应该尝试编写一个自定义的 django 命令并发布有关如果它们出现的问题 【参考方案1】:

这样做没有意义。模板系统和静态资产系统都已经支持直接从站点包运行,无需任何额外的配置步骤:实际上这正是内置管理应用程序所做的。

如您所知,collectstatic 从每个应用程序内部的目录中收集静态文件,并将它们放在一个中心位置以进行部署。但是对于模板,您甚至不需要该步骤:默认的 TEMPLATE_LOADERS 包含一个加载程序,该加载程序从应用程序本身的模板目录加载模板。绝对不需要额外的步骤。

【讨论】:

有没有办法使在站点包目录中安装和可见的模板在项目的根目录中也可见(或自动安装)(无需手动移动它们或重新- 在那里创建它们?)。我知道该站点可以使用站点包中的这些文件,我只是希望它们在项目目录中也可见以进行自定义。

以上是关于在实际应用程序目录中包含模板/静态文件的 pip 安装(不仅仅是在站点包目录中)的主要内容,如果未能解决你的问题,请参考以下文章

django是否在模板中包含静态文件?

如何在模块中包含 *.py 以外的文件?

Django 模板中包含的 Pygal svg 图表的工具提示问题

在刀片模板中包含 js 文件

在 netbeans 的静态库中包含静态库

如何使用 node.js 在 html 中包含静态文件