我发现了很多关于如何在Django 1.x中解决静态文件的建议。是否有最佳做法的方式去做?在Django目前提供静态文件的最佳做法是什么
回答
在Django中可能有方法来提供静态文件,但Django 1.3引入了一个新的选项来处理它们。基本上,您可以在包含静态媒体的项目级别或应用程序级别定义特定目录。然后通过管理命令'collectstatic',可以将项目目录中的所有静态文件复制到Web服务器提供的单独目录(可能在项目外部)。这解决了以前方法的许多复杂问题。
1)它允许第三方应用程序以标准方式轻松包含静态文件。不再需要从您的web服务器目录创建符号链接到各个python/django模块中的位置。
2)它使您可以更好地控制Web服务器可以托管其静态文件的位置。例如,您可以在版本控制下定义项目内的所有静态媒体,但将其全部复制到文件系统任何位置的外部位置。这样可以避免必须将Web服务器指向项目内的某个位置。
3)分离静态媒体,永远不会改变静态媒体,由用户使用像FileField一样上传的静态媒体。这很好,因为您可能希望将站点级静态媒体保存在版本控制中(要安装在您的开发服务器上),但用户提交的内容将上传到不同的目录(与1.3版之前的django版本不同)。
我认为这个功能曾经是合并到核心的第三方模块。
下面是文档: https://docs.djangoproject.com/en/dev/howto/static-files/
基本上有一些新的settings.py变量:
STATIC_ROOT - 这是你的文件系统,将您的网络服务器提供服务的目录。运行./manage.py collectstatic时,项目中的所有静态文件及其应用程序都将被复制到您在此处指定的目录中。
STATIC_URL - 这是您将设置用来表示您的内容将基于哪个网址的网址。如果你将这个值设置为“/ static /”,那么“/ static /”将作为所有静态介质URL的前缀。你也将在你的模板中使用这个变量。例如,在你的模板,你可以指定类似:其中静态文件复制到
<img src="{{ STATIC_URL }}logo.png">
的STATIC_ROOT设置变量指定的,但你也需要提供其中的静态文件从复制的位置。这可以通过在单个Django应用程序中创建一个名为“static //”的目录来完成,类似于您在应用程序中对模板所做的操作。在运行collectstatic命令时,Django会将所有应用程序中所有“静态/”目录中的所有静态文件复制到STATIC_ROOT目录。您也可以使用STATICFILES_DIRS设置变量来定义项目级目录以从中复制静态媒体。
虽然静态媒体有很多种服务方式,但我认为这是Django设置的一个很好的API,它有助于更好地集成第三方模块。这个特征现在被包含在核心中的事实可以表明这种方法可能获得了一些动力。
希望这有助于 乔
- 1. 无法提供静态文件,Django 1.6
- 2. 提供支持取消的方法/类/组件的最佳做法是什么?
- 3. node.js,express.js - 提供单个静态文件的最简单方法是什么?
- 4. Apache不会提供Django静态文件
- 5. Django 1.7 - 提供静态文件
- 6. Nginx没有提供Django静态文件
- 7. Django和提供静态文件
- 8. Django未提供静态文件
- 9. NGINX为Django App提供静态文件
- 10. Django和Apache不提供静态文件
- 11. 用Django提供静态文件
- 12. django用nginx提供静态文件
- 13. django:通过nginx提供静态文件
- 14. 什么是在C#中的文件处理的最佳做法?
- 15. 通过Flash提供最高品质的视频体验,您的最佳提示/最佳做法是什么?
- 16. 在线发布/ doc文件夹的最佳做法是什么
- 17. Django项目提供多个应用程序的静态文件
- 18. 在django中捕获瞬时模型状态的最佳做法是什么?
- 19. 什么是ViewModel的最佳做法
- 20. 托管许多静态文件的最佳做法
- 21. 从CDN和本地目录中用Django提供静态文件
- 22. 为Android AnimationDrawable PNG序列提供资源的最佳做法是什么?
- 23. django动态导航的最佳做法?
- 24. BizSpark目前提供什么?
- 25. 使用Jsp包含静态内容的最佳做法是什么?
- 26. NGINX提供静态文件
- 27. Sinatra提供静态文件
- 28. 更新gemspec文件列表的最佳做法是什么?
- 29. 处理文件和路径的最佳做法是什么?
- 30. 将文件上传到MemoryStream(C#)的最佳做法是什么?
Django的2.x的是吗? – DrTyrsa
不,它没有发布,如果这是你的意思...问题改变,所以它实际上是有道理的。感谢您的反馈。 – SMTF