我正在使用django 1.5.2并且我很难理解媒体目录与静态目录的目的以及如何在我的django项目中包含样式表。
这是我的目录结构:
django_books
beer
__init__.py
admin.py
models.py
views.py
random_book
(same as beer above)
django_books (the actual django project; beer and random_book above are my apps)
templates
base.html
beersall.html
__init__.py
settings.py
urls.py
views.py
wsgi.py
static
css
beers.css
media
css
beers.css
static
css
beers.css
manage.py
我的beersall.html模板(啤酒输出正确,所以只是链接样式表是错误的):
{% extends 'base.html' %}
{% block content %}
<div id="beer_list">
{% for beer in beers %}
{{ beer }},
{% endfor %}
</div>
{% endblock %}
我的base.html文件:
<html>
<head>
<link rel="stylesheet" type="text/css" href="/media/css/beers.css" />
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/beers.css" />
<link rel="stylesheet" type="text/css" href="{{ MEDIA_URL }}css/beers.css" />
<link rel="stylesheet" type="text/css" href="/static/css/beers.css" />
<link rel="stylesheet" type="text/css" href="/Users/username/Projects/django_books/media/beers.css" />
<link rel="stylesheet" type="text/css" href="/Users/username/Projects/django_books/static/beers.css" />
<link rel="stylesheet" type="text/css" href="/Users/username/Projects/django_books/django_books/static/beers.css" />
{% block extrahead %}{% endblock %}
</head>
<body>
<div id="page_container">
{% block content %}
{% endblock %}
</div>
</body>
</html>
我的settings.py文件:
MEDIA_ROOT = '/Users/username/Projects/django_books/media/'
MEDIA_URL = '/Users/username/Projects/django_books/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
我应该注意到我使用的是django开发服务器,而不是apache。
我的浏览器(开发者控制台)中的错误说beers.css
是404。
网址为localhost:8000/beers/
,我的urls.py文件正确指向此,并且views.py正确地为beersall.html模板提供服务。如何正确链接我的媒体?
当我将css链接href值更改为/Users/username/Projects/django_books/media/
时,它仍然不起作用。
我已更新href
值以显示我尝试过的内容。仍然没有工作......
答案 0 :(得分:0)
用户上传的文件(由管理员或网站用户)转到媒体目录。 静态文件是由开发人员(或第三方应用程序)提供的文件。
设置如下:
# Local disk paths
MEDIA_ROOT = '/Users/username/Projects/django_books/media/'
STATIC_ROOT = '/Users/username/Projects/django_books/static/'
# URLs visible in the browser's address bar
MEDIA_URL = '/media/'
STATIC_URL = '/static/'
在您的模板中使用STATIC_URL
变量:
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/beers.css" />
将您的样式移至django_books/static/
目录。
答案 1 :(得分:0)
在我的项目中:django_learn,在模板中:check_uncheck_all.html,部分代码:
{% load staticfiles %}
<html>
<head>
<script type=text/javascript src="{% static 'js/jquery-1.9.1.js' %}"></script>
</head>
您还可以查看我的settings.py
答案 2 :(得分:0)
正在找到静态文件,但未正确设置权限。 (即403不是404服务器错误)
<VirtualHost *:80>
WSGIScriptAlias / /Users/username/Projects/django_books/django_books/django.wsgi
#the directory tag before was /Users/username/Projects/django_books/django_books/>
#this was one directory too deep
#from my structure above, you can see I needed to change my directory tag to this:
<Directory /Users/username/Projects/django_books/>
Order Allow,Deny
Allow from All
</Directory>
<Directory /Users/username/.virtualenvs/django_books/lib/python2.7/site-packages/django/contrib/admin/static/admin/>
Order Allow,Deny
Allow from All
</Directory>
Alias /static/admin/ /Users/username/.virtualenvs/django_books/lib/python2.7/site-packages/d$
Alias /static/ /Users/username/Projects/django_books/static/
</VirtualHost>