我在Windows XP上运行django 1.3,python 2.7
我正在尝试在我的django应用程序的静态文件夹中设置一个CSS。
模板如下:
<html>
<head>
<title>css demo</title>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/my.css" />
</head>
<body>
生成的HTML如下所示:
<html>
<head>
<title>css demo</title>
<link rel="stylesheet" type="text/css" href="http://localhost/static/css/my.css" />
</head>
...
所以看来我已经设置了所有内容,以便指定静态文件在模板中的位置,然后在生成的html中。
但有人注意到'http://localhost/static/css/my.css'。我怎么去那里?
我像这样跑了collectstatic:
C:\root\workspace\mywebapp\src\mywebapp>c:\Python27\python.exe manage.py collectstatic
You have requested to collect static files at the destination location as specified in your settings file.
This will overwrite existing files.
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel: yes
Copying 'c:\root\workspace\mywebapp\src\mywebapp\css_demo\static\css\my.css'
1 static file copied to 'C:/root/workspace/mywebapp/src/mywebapp/static/'.
所以我现在在c:\ root \ workspace \ mywebapp \ src \ mywebapp \ css_demo \ static \ css \ my.css
中有my.css在我的设置中,我有:
STATIC_ROOT = 'C:/root/workspace/mywebapp/src/mywebapp/static/'
STATIC_URL = 'http://localhost/static/'
在我的url.py中我有:
from django.conf.urls.defaults import patterns, include, url
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns = patterns('',
(r'^mywebapp/', include('mywebapp.css_demo.urls')),
)
urlpatterns += staticfiles_urlpatterns()
所以,如果我理解正确,我的css在:
c:\root\workspace\mywebapp\src\mywebapp\css_demo\static\css\my.css
不应该在:
http://localhost/static/css/my.css
但相反,我看到了:
Page not found (404)
Request Method: GET
Request URL: http://localhost/static/css/my.css
Using the URLconf defined in mywebapp.urls, Django tried these URL patterns, in this order:
^mywebapp/
The current URL, static/css/my.css, didn't match any of these.
我也尝试过:
http://localhost/mywebapp/static/css/my.css
http://localhost/mywebapp/css_demo/static/css/my.css
我在这里错过了一步吗? 关于此的文档有点令人困惑。 http://docs.djangoproject.com/en/1.3/howto/static-files/ http://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/
谢谢!
答案 0 :(得分:5)
我打赌你的应用是http://localhost:8000
,而非http://localhost
:)
更改
STATIC_URL = 'http://localhost/static/'
到
STATIC_URL = '/static/'
那里不需要绝对URL。
答案 1 :(得分:2)
我创建了一个文件夹:
C:\root\workspace\mysite\src\mysite\common
在我的设置中,我有:
STATIC_ROOT = 'C:/root/workspace/mysite/src/mysite/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
"C:/root/workspace/mysite/src/mysite/common/static",
)
这似乎有效。