和这里的其他问题一样,我希望在运行collectstatic时忽略我的.scss
文件。但是因为我使用的是Heroku,它自动运行collectstatic,所以我宁愿自定义collectstatic
的忽略模式列表,也不愿更改管理命令。你知道吗
Django 2.2提供了a way to do this,如下所述:
The default ignored pattern list, ['CVS', '.', '~'], can be customized in a more persistent way than providing the --ignore command option at each collectstatic invocation. Provide a custom AppConfig class, override the ignore_patterns attribute of this class and replace 'django.contrib.staticfiles' with that class path in your INSTALLED_APPS setting:
from django.contrib.staticfiles.apps import StaticFilesConfig
class MyStaticFilesConfig(StaticFilesConfig):
ignore_patterns = [...] # your custom ignore list
我的问题是,这是我的第一个Django项目,我不太知道如何提供一个定制的AppConfig类(深入研究AppConfig文档并没有帮助)。我的意思是,我应该将这个类添加到一个全新的应用程序中还是使用现有的应用程序?这个类将在apps.py
文件中吗?如果是的话,最好的应用程序应该是什么?所以我想问是否有人能为我提供一个最佳实践的例子。你知道吗
作为参考,现在我的应用程序结构是这样的(所有模板、资产和应用程序都分组在各自的文件夹中,而不是在每个应用程序中):
-- project_name
-- assets
-- app1
-- templates
-- project_name
-- app1
-- app2
-- __init__.py
-- settings.py
-- urls.py
-- wsgi.py
更新:
正如Nico所建议的,我在project_name.project_name
中创建了一个名为static的应用程序,只有一个初始.py文件和应用程序.py. apps.py
与doc示例完全相同:
from django.contrib.staticfiles.apps import StaticFilesConfig
class StaticConfig(StaticFilesConfig):
name = 'static'
ignore_patterns = ['CVS', '.*', '*~', '*.scss']
但是,我在从INSTALLED_APPS
替换'django.contrib.staticfiles'
时遇到了错误。你知道吗
'project_name.static'
会使终端无法理解collectstatic
管理命令。你知道吗'django.contrib.staticfiles'
(即。
不删除(后面的)使其忽略覆盖并收集
.scss
文件。你知道吗'project_name.static.apps.StaticConfig'
会引发
Cannot import 'static'.
错误更新2:
在我回滚了应用程序创建之后,我再次尝试了is,但是现在,我没有将startapp
与文件路径一起使用,而是在项目根上创建了应用程序,对其进行了测试,然后手动将其移动到我的应用程序文件夹中,并再次进行了测试。出于某种原因我不太明白,这次我用'django.contrib.staticfiles'
替换了'project_name.static'
,现在它成功了。你知道吗
您可以将它添加到其他应用程序中,甚至只在项目名称的根目录中创建一个名为static的文件,并直接在
settings.INSTALLED_APPS
中引用该文件中的类,但提供AppConfigs的推荐方法是在应用程序.py应用程序包中的文件。你知道吗如果您没有可以放置这个
AppConfig
的应用程序,我认为最好的做法是在project下创建一个包_name.project\u名称称为static,只有一个init.py文件和一个应用程序.py文件。你知道吗在这个文件中,您可以按照您描述的方式创建
AppConfig
。 您的文件结构将如下所示:相关问题 更多 >
编程相关推荐