使用Django访问.css文件时出现问题
我刚从Django开始,在AptanaStudio3中使用PyDev。我使用了有用的Django教程来构建我的简单项目的主干。现在,我正试图使用css进行一些基本的格式化和着色,但已经花了相当长的一段时间 html页面仍然显示良好。它只是没有抓住css(404)。我从控制台知道这一点:使用Django访问.css文件时出现问题,css,django,static,Css,Django,Static,我刚从Django开始,在AptanaStudio3中使用PyDev。我使用了有用的Django教程来构建我的简单项目的主干。现在,我正试图使用css进行一些基本的格式化和着色,但已经花了相当长的一段时间 html页面仍然显示良好。它只是没有抓住css(404)。我从控制台知道这一点: [20/Mar/2013 12:41:51] "GET /signup/ HTTP/1.1" 200 306 [20/Mar/2013 12:41:51] "GET /signup/static/signup.c
[20/Mar/2013 12:41:51] "GET /signup/ HTTP/1.1" 200 306
[20/Mar/2013 12:41:51] "GET /signup/static/signup.css HTTP/1.1" 404 2750
我的文件结构:
Learning
- Learning
--- templates
----- 404.html
----- 500.html
--- _init.py
--- settings.py
--- urls.py
--- wsgi.py
- signup
--- static
----- signup.css
--- templates
----- signup
------- detail.html
------- index.html
------- results.html
----- __init__.py
----- admin.py
----- models.py
----- tests.py
----- urls.py
----- view.py
--- manage.py
--- sqlite.db
--- python
在设置中:
STATIC_ROOT = ''
STATIC_URL = 'static/'
STATICFILES_DIRS = ('')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
在我的html模板中:
<html>
<head>
<title>User List</title>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}signup.css" />
...
有什么见解吗?- 您的
是一个相对路径(STATIC\u URL
),这意味着将相对于当前页面搜索所有静态文件。Django的测试服务器不希望出现这种行为,因此静态URL将不匹配,从而触发404错误。您需要将该路径设置为绝对路径,而不是相对于页面的路径(例如,STATIC/
)/static/
- 在testserver上使用Django的staticfiles系统时,需要使用
/manage.py collectstatic
- 我还强烈建议使用
语法,而不是{%static'signup.css%}
。请注意,如果使用此替代格式,则需要在文件的前面某处包含{{static\u URL}}}signup.css
{%load static%}
- 您的
是一个相对路径(STATIC\u URL
),这意味着将相对于当前页面搜索所有静态文件。Django的测试服务器不希望出现这种行为,因此静态URL将不匹配,从而触发404错误。您需要将该路径设置为绝对路径,而不是相对于页面的路径(例如,STATIC/
)/static/
- 在testserver上使用Django的staticfiles系统时,需要使用
/manage.py collectstatic
- 我还强烈建议使用
语法,而不是{%static'signup.css%}
。请注意,如果使用此替代格式,则需要在文件的前面某处包含{{static\u URL}}}signup.css
{%load static%}
/manage.py
?Django需要将所有静态文件收集到一个目录中,以便使用测试服务器为它们提供服务。另外,请确保将您的STATIC\u ROOT
设置设置为绝对且可写的路径,以便有效地收集文件。有关更多信息,请参阅。另外,请记住,在生产环境中,静态文件应直接由HTTP服务器提供。此外,CSS文件将在路径/signup/static/signup.CSS
处检索,而静态URL
是/static/
。您需要将该路径设置为绝对路径,而不是相对于页面的路径。要么更改为href=“/{{STATIC\u URL}}signup.css”
,要么使用{%STATIC'signup.css%%}
模板标记,该标记由staticfiles
库提供(更好!)。@pistache(post1),不,我没有运行它。我只是照你的建议做了,没有修好。我马上更新文件结构。@pistache(post2)太棒了!静态URL路径是问题所在。我把它变成绝对的,魔法发生了。非常感谢!(另外,如果你把这个评论作为一个正式的回答,我很乐意接受)@pistache这是不正确的,collectstatic只用于部署,而不是开发。你运行了/manage.py collectstatic
?Django需要将所有静态文件收集到一个目录中,以便使用测试服务器为它们提供服务。另外,请确保将您的STATIC\u ROOT
设置设置为绝对且可写的路径,以便有效地收集文件。有关更多信息,请参阅。另外,请记住,在生产环境中,静态文件应直接由HTTP服务器提供。此外,CSS文件将在路径/signup/static/signup.CSS
处检索,而静态URL
是/static/
。您需要将该路径设置为绝对路径,而不是相对于页面的路径。要么更改为href=“/{{STATIC\u URL}}signup.css”
,要么使用{%STATIC'signup.css%%}
模板标记,该标记由staticfiles
库提供(更好!)。@pistache(post1),不,我没有运行它。我只是照你的建议做了,没有修好。我马上更新文件结构。@pistache(post2)太棒了!静态URL路径是问题所在。我把它变成绝对的,魔法发生了。非常感谢!(另外,如果你把这个评论作为一个正式的回答,我会很高兴地接受它)@pistache这是不正确的,collectstatic只是用于部署,而不是开发。这对我来说有点夸张。Django文档建议使用staticfiles模块,在我看来,因为这是标准的方法,所以您应该这样做。当然,结果是一样的,但我喜欢约定和清晰。顺便说一下,您的编辑是一个非常好的主意(特别是因为缺少{%load staticfiles%}
导致的错误根本不明确)。我还没来得及接受它,它就被其他用户拒绝了,这表明有多少用户在审查编辑内容时没有查看。我会自己加的,谢谢。这对我来说有点夸张。Django文档建议使用staticfiles模块,在我看来,因为这是标准的方法,所以您应该这样做。当然,结果是一样的,但我喜欢约定和清晰。顺便说一下,您的编辑是一个非常好的主意(特别是因为缺少{%load staticfiles%}
导致的错误根本不明确)。我还没来得及接受它,它就被其他用户拒绝了,这表明有多少用户在审查编辑内容时没有查看。我自己加上,谢谢。
def ip_address_processor(request):
return {'ip_address': request.META['REMOTE_ADDR']}
def index(request):
user_list = User.objects.order_by('name')[:5]
template = loader.get_template('signup/index.html')
context = RequestContext(
request,
{'user_list': user_list,},
[ip_address_processor])
return HttpResponse(template.render(context))