【发布时间】:2010-10-01 13:19:00
【问题描述】:
已询问过此问题的变体,但在呈现模板时我仍然无法正确加载样式表。
我正在尝试在开发过程中从 Django 进程中提供静态媒体 - 我知道,在生产中强烈建议不要这样做。我将发布我的配置和模板,希望有人能帮助我了解我哪里出错了。
请注意,我确实尝试按照 Django 项目网站上的示例进行操作,但是它没有提到如何从模板中引用您的样式表。我还尝试了同一事物的许多不同变体,因此我的代码/设置可能与描述的有所不同。
settings.py
MEDIA_ROOT = 'D:/Dev Tools/django_projects/dso/media'
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/media/'
urls.py
from django.conf.urls.defaults import *
from django.conf import settings
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'^ovramt/$', 'dso.ovramt.views.index'),
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
)
在我的模板中:
<head>
<title> {% block title %} DSO Template {% endblock %} </title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
<link rel="stylesheet" type="text/css" href="../media/styles.css">
</head>
我向您保证,文件(模板/媒体)位于我的文件系统上的正确目录中。如果我需要提供任何额外信息,请发表评论。
编辑:
我遇到的一个问题是在链接前使用了“/”。如果添加了正斜杠,则从站点的根目录打开链接。如果没有正斜杠,则在当前级别打开链接。一个例子:
www.example.com/application/ 有一个链接“/app2/”和一个链接“app3/”。
app2 将在 www.example.com/app2/ 打开,app3 将在 www.example.com/application/app3/ 打开。我想这让我很困惑。
【问题讨论】:
-
一个问题;您是否尝试过直接从浏览器加载“http://
/media/styles.css”? -
我是唯一一个觉得在使用 Django 开发过程中必须跳过所有这些障碍来测试/预览 CSS 和图像很愚蠢的人?当然,您不想在生产环境中执行此操作并使用真正的 Web 服务器,但对于开发,您需要查看样式/图像以提供良好的预览。
-
真的没有太多可以跳过的圈子。我只是在我可能不应该有的地方跌跌撞撞。
-
您说“如果前面加了正斜杠,则从下面的级别打开链接。”但实际上,正斜杠使它从最顶层加载。所以从site.com/a/b/c,如果有到/d的链接,它会去site.com/d。
标签: python css django django-templates media