Django静态设置



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

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

  1. 将静态文件放入<app>/static或添加STATICFILES_DIRS的绝对路径
  2. 配置你的web服务器(你不应该在Django中提供静态文件)为STATIC_ROOT中的文件提供服务
  3. STATIC_URL指向web服务器提供的基础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。

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

以下是官方文档:

如何管理静态文件: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项目应用程序之外。
  • 在设置中定义STATICFILES_DIRS, STATIC和MEDIA路径。
  • 在模板文件夹、urls.py、settings.py等旁边创建staticfiles文件夹
  • 你不需要创建媒体文件夹,因为它会在你上传图片时自动创建。
  • 在你的url配置文件中加入这个:

    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">
    

相关内容

  • 没有找到相关文章

最新更新