我的登陆样式有问题。我不知道发生了什么,因为早先的工作。
使用该网站的文件,我在"静态"。 在" staticfiles"
中使用的文件,例如django管理面板我的settings.py文件,静态文件:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
TEMPLATE_DIRS = (
join (base_dir, 'templates'),
)
STATICFILES_DIRS = (
join (base_dir, 'static')
)
STATIC_URL = '/static/'
STATIC_ROOT = (
join (base_dir, 'staticfiles')
)
HTML code,base.html。这是我的主页:
<!DOCTYPE html>
<html>
<head>
<title>Test site</title>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}/css/main.css">
</head>
<body>
<div class="container">
{% block nav %}
<div class="header">
<ul class="nav nav-pills pull-right">
<li {% if request.path == '/' %} class="active" {% endif %}>
<a href="/">Home</a>
</li>
{% if user.is_authenticated %}
<li{% if request.path == '/elist/'%} class="active" {%endif%}>
<a href="{% url 'emaillist' %}">E-mail list</a>
</li>
{% endif %}
<li{% if request.path == '/contact/' %} class="active" {% endif %}>
<a href="{% url 'contact1' %}">Contact</a>
</li>
</ul>
<h3 class="text-muted"><a href="/">Name site</a></h3>
</div>
{% endblock %}
{% block header %}
<div class="jumbotron">
<h1>Soon we go!</h1>
<p class="lead">Landing page.</p>
</div>
{% endblock %}
{% block content %}{% endblock %}
{% block footer %}{% endblock %}
</div>
</body>
</html>
答案 0 :(得分:2)
这看起来不太好:
STATIC_ROOT = (
join (base_dir, 'staticfiles')
)
这个变量应该是一个字符串,而不是一个元组,如下所示:
STATIC_ROOT = join(base_dir, 'staticfiles')
但我认为你可能想要这样做:
STATICFILES_DIRS = (
join(base_dir, 'staticfiles')
)
确保base_dir
是绝对路径,并且staticfiles/css/main.css
确实存在。
由于您使用的是Django 1.6,因此最好使用{% static 'css/main.css' %}
代替{{ STATIC_URL }}/css/main.css
。为此,你必须在文件中提前{% load staticfiles %}
,理想情况下靠近顶部。
documentation很好地解释了这些变量之间的区别。简而言之:
django.contrib.staticfiles
中有INSTALLED_APPS
,则Django会在您应用的static
目录中发现静态文件,并从那里提供服务。STATICFILES_DIRS
指定Django应查找静态文件的其他目录。STATIC_ROOT
时,DEBUG=False
可用于部署。这应该是文件系统中的绝对路径,这是您的Web服务器使用的路径,如Apache(不是Django的内置开发服务器)。当您运行python manage.py collectstatic
时,Django将收集项目中的所有静态文件并将它们复制到此公共位置。STATIC_URL
是静态文件的基本URL。通常是/static/
。在部署中,Django不会提供此URL,而是由STATIC_ROOT
的位置直接由Web服务器提供。答案 1 :(得分:0)
STATIC_ROOT = os.path.join(PROJECT_DIR,'static')
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(PROJECT_DIR,'staticfiles'), # if you name your static files folder as "staticfiles"
)
现在模板中包含静态文件
<link rel="stylesheet" type="text/css" href="{% static 'css/main.min.css' %}" />
<script type="text/javascript" src="{% static 'js/jquery.min.js' %}"></script>