我在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"处有注意事项。我怎么能把它拿到那里?
我像这样运行收集静态:
C:rootworkspacemywebappsrcmywebapp>c:Python27python.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:rootworkspacemywebappsrcmywebappcss_demostaticcssmy.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:rootworkspacemywebappsrcmywebappcss_demostaticcssmy.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/
谢谢!
我敢打赌,你的应用程序运行在 http://localhost:8000
,而不是http://localhost
:)
改变
STATIC_URL = 'http://localhost/static/'
自
STATIC_URL = '/static/'
那里不需要绝对的URL。
我创建了一个文件夹:
C:rootworkspacemysitesrcmysitecommon
在我的设置中,我有:
STATIC_ROOT = 'C:/root/workspace/mysite/src/mysite/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
"C:/root/workspace/mysite/src/mysite/common/static",
)
这似乎有效。