【问题标题】:Django: static filesDjango:静态文件
【发布时间】:2012-03-23 15:37:49
【问题描述】:

当我尝试从我的博客中提供图片时,模板正在查看

[26/Mar/2012 10:33:42] "GET /blog/images/coke.jpg HTTP/1.1" 200 6153

但是,当我从平面页面加载图像时,模板看起来会在

[26/Mar/2012 10:33:42] "GET /blog/images/coke.jpg HTTP/1.1" 200 6153

我认为这是因为我需要在我的博客应用程序的 urls.py 文件中添加一些内容,以便它知道我的静态 URL 是什么,而不是查看 blog/images 文件夹。

我正在使用标签:

src="{{ STATIC_URL }}images/header.png"

我的 settings.py 有:

STATIC_ROOT = '/export/mailgrp4_a/sc10jbr/WWWdev/dbe/djangostatic/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/export/mailgrp4_a/sc10jbr/WWWdev/dbe/static/',

我的博客 url.py 有:

urlpatterns = patterns('dbe.blog.views',
(r"^(\d+)/$", "post"),
(r"^add_comment/(\d+)/$", "add_comment"),
(r"^delete_comment/(\d+)/$", "delete_comment"),
(r"^delete_comment/(\d+)/(\d+)/$", "delete_comment"),
(r"^month/(\d+)/(\d+)/$", "month"),
(r"", "main"),
)

我的主要 url.py 有:

urlpatterns = patterns('',
url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)

我需要添加什么?

我更新的博客 url.py 有:

from django.conf.urls.defaults import *
from dbe.blog.models import *
from django.contrib.staticfiles.urls import staticfiles_urlpatterns


urlpatterns = patterns('dbe.blog.views',
(r"^(\d+)/$", "post"),
(r"^add_comment/(\d+)/$", "add_comment"),
(r"^delete_comment/(\d+)/$", "delete_comment"),
(r"^delete_comment/(\d+)/(\d+)/$", "delete_comment"),
(r"^month/(\d+)/(\d+)/$", "month"),
(r"", "main"),
)

urlpatterns += staticfiles_urlpatterns()

我更新后的主 url.py 有:

from django.conf.urls.defaults import *
from dbe.blog.models import *
from django.contrib.staticfiles.urls import staticfiles_urlpatterns

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
url(r'^blog/', include('blog.urls')),

# Uncomment the admin/doc line below to enable admin documentation:
url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),

)

urlpatterns += staticfiles_urlpatterns()

任何其他人都可以帮助解决这个问题,即使在遵循以下帮助后我也真的卡住了。有什么我可以用来帮助调试和诊断问题的吗?

谢谢

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    在开发过程中,您可以将其添加到 urls.py。完成后,您必须配置 Web 服务器以提供静态文件。

    if settings.DEBUG:
        urlpatterns += patterns('',
            url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
                'document_root': settings.MEDIA_ROOT,
            }),
             url(r'^static/(?P<path>.*)$', 'django.views.static.serve', {
                'document_root': settings.STATIC_ROOT,
            }),
       )
    

    【讨论】:

      【解决方案2】:

      您似乎错过了以下内容:

      settings.py(可能需要syncdb

      INSTALLED_APPS = (
      ...
      "django.contrib.staticfiles",
      ...
      )
      
      TEMPLATE_CONTEXT_PROCESSORS = (
      ...
      'django.core.context_processors.static',
      ...
      )
      

      主 urls.py:

      from django.contrib.staticfiles.urls import staticfiles_urlpatterns
      
      urlpatterns += staticfiles_urlpatterns()
      

      运行collectstatic 命令

      还有包含所有详细信息的文档页面:

      https://docs.djangoproject.com/en/1.3/howto/static-files/

      【讨论】:

      • 我应该将它添加到哪个 urls.py 中?我已经将它添加到两者中,它没有任何区别。我将在上面发布两个附加的 urls.py。我可能编辑不正确。谢谢
      • += staticfiles_urlpatterns() 仅在主 urls.py 中需要。你跑collectstatic了吗?直接打开某个静态文件的url看到了什么?
      • 好的,collectstatic 已成功将我所有的文件放入 djangostatic。我的平面页面可以完美访问图像,因为它们不是应用程序?在终端中,当我打开我的主页(平面页面)时,我的图像从以下位置加载:[23/Mar/2012 16:10:54] "GET /static/images/header.png HTTP/1.1" 304 0 但是当我加载我的图片从博客页面加载:[23/Mar/2012 16:11:00] "GET /blog/images/header.png HTTP/1.1" 200 3630。谢谢
      【解决方案3】:

      /blog/images/header.png 请求图像的唯一方法是如果{{ STATIC_URL }} 被评估为空字符串。发生的唯一方法是如果它没有在上下文中设置,并且唯一发生的方法是如果你没有包含 staticfiles 模板上下文处理器:

      TEMPLATE_CONTEXT_PROCESSORS = (
          'django.core.context_processors.static',
      )
      

      【讨论】:

      • 不过,我说的是真的。如果你有那条线,那么无论出于何种原因,它都没有被应用。您可能不小心在其他地方覆盖了TEMPLATE_CONTEXT_PROCESSORS,或者您的服务器没有运行此设置所在的最新代码。删除所有 *.pyc 文件并确保完全停止正在运行的任何服务器,然后重新启动它。
      猜你喜欢
      • 2014-02-26
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 2012-09-30
      • 2018-07-10
      • 2014-06-03
      相关资源
      最近更新 更多