有人问过这个问题的变体,但我仍然无法在呈现模板时正确加载样式表。
我试图在开发过程中为Django进程中的静态媒体提供服务——我知道,这在生产中是非常不受欢迎的。我会发布我的配置和模板,希望有人能帮助我理解哪里出错了。
请注意,我确实尝试遵循Django项目网站上的示例,但是它没有提到如何从模板引用样式表。我也尝试过同一件事的许多不同变体,所以我的代码/设置可能与所描述的有点出入。
设置.py
MEDIA_ROOT = 'D:/Dev Tools/django_projects/dso/media'
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/media/'
网址.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/上打开。我想这让我很困惑。
我通常将自己的模板标记简单化,因为Django没有提供CSS/JavaScript文件。Apache这样做,所以我的媒体url通常是http://static.mysite.com。
您的应用程序/模板标记/媒体url.py:
并且在我的模板文件中:
您还可以使your own context preprocessor在每个模板中添加媒体url变量。
我只是自己想办法。
设置.py:
网址.py:
模板文件:
文件位于此处:
Django已经有媒体URL的上下文进程,请参见Django's documentation。
默认情况下,它应该在RequestContext中可用(除非您已经自定义了上下文处理器并忘记添加它)。
相关问题 更多 >
编程相关推荐