1

我查看了无数答案和问题,试图找到一个明确的指南或方法来做到这一点,但似乎每个人都有不同的方法。有人可以向我解释如何在模板中提供静态文件吗?

假设我刚刚使用 Django 1.4 创建了一个全新的项目,我需要做什么才能渲染图像?我应该把媒体和静态文件夹放在哪里?

4

4 回答 4

2
  1. 将您的静态文件放入<app>/static或添加绝对路径STATICFILES_DIRS
  2. 配置你的网络服务器(你不应该用 Django 提供静态文件)来提供文件STATIC_ROOT
  3. 指向STATIC_URLWeb 服务器提供的基本 URL
  4. ./manage.py collectstatic
  5. 确保RequestContext在您的渲染调用中使用并{{ STATIC_URL }}为路径添加前缀
  6. 喝咖啡,拍拍自己的背

关于在 Django 前面运行 Web 服务器的更多信息。Django 实际上是一个应用服务器。它并没有被设计为在提供静态文件方面有任何好处。这就是为什么它在DEBUG=False. 此外,不应将 Django 开发服务器用于生产。这意味着在任何时候都应该有一些东西在 Django 面前。它可能是一个 WSGI 服务器,例如 gunicorn,也可能是一个“真正的”Web 服务器,例如 nginx 或 Apache。

如果您正在运行反向代理(例如 nginx 或 Apache),您可以绑定/static到文件系统中的路径,并将其余流量传递给 Django。这意味着您STATIC_URL可以是相对路径。否则,您将需要使用绝对 URL。

于 2013-03-07T22:49:29.333 回答
0

创建的项目应该有一个静态文件夹。将所有资源(图像,...)放在那里。然后,在您的 HTML 模板中,您可以引用 STATIC_ROOT 并添加资源路径(相对于静态文件夹)

于 2013-03-07T21:43:42.977 回答
0

这是官方文档:

如何管理静态文件: https ://docs.djangoproject.com/en/1.4/howto/static-files/

一般静态文件: https ://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/

如果您打算在生产类型设置中部署,那么您应该阅读此处的部分: https ://docs.djangoproject.com/en/1.4/howto/static-files/#staticfiles-production

通常,您将我们的静态和媒体文件夹放在 django 项目应用程序之外

于 2013-03-07T21:59:55.113 回答
0
  • 在设置中定义您的 STATICFILES_DIRS、STATIC 和 MEDIA 路径。
  • 在您的模板文件夹、urls.py、settings.py 等旁边创建 staticfiles 文件夹...
  • 您不必创建媒体文件夹,因为它会在您上传图像时自动创建。
  • 在你的 urlconf 中放这个:

    from django.conf.urls import patterns, include, url
    from django.contrib import admin
    from django.conf import settings
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    from django.conf.urls.static import static
    
    admin.autodiscover()
    
    urlpatterns = patterns('',
        .............
    ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    urlpatterns += staticfiles_urlpatterns()
    
  • 在模板中:

    {% load static %}
    <img src="{% static 'images.png' %}">
    <img src="{{MEDIA_URL}}images.png">
    
于 2013-03-08T01:35:06.827 回答