有人问过这个问题的变体,但是在渲染模板时,我仍然无法正确加载样式表。
我正在尝试在开发过程中通过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/打开我认为这让我感到困惑。
我只需要自己弄清楚这一点。
settings.py:
MEDIA_ROOT = 'C:/Server/Projects/project_name/static/' MEDIA_URL = '/static/' ADMIN_MEDIA_PREFIX = '/media/'
urls.py:
from django.conf import settings ... if settings.DEBUG: urlpatterns += patterns('', (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), )
模板文件:
<link rel="stylesheet" type="text/css" href="/static/css/style.css" />
文件位于此处:
"C:/Server/Projects/project_name/static/css/style.css"