我正在编写第一次 Django 应用程序,所以如果我在事情上有点落后,请多多包涵。
这是我的 settings.py 的摘录:
STATIC_ROOT = os.getcwd().replace('\\','/') + '/static'
STATIC_URL = '/static_files/'
STATICFILES_DIRS = (
os.getcwd().replace('\\','/') + '/static'
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
注意:我希望这os.getcwd()...
条线有效。我很确定这不是我的问题,但如果这是一个问题,请告诉我。它是用于本地开发目的的占位符,所以当我部署时不要担心它会保留在那里。
我的第一个问题是模板变量似乎不起作用。
我的主模板文件的摘录:
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL|default:'/static_files/' }}css/base.css" />
我最初只是{{ STATIC_URL }}
在那里,但这根本没有返回任何东西,所以我尝试添加|default:'...'
. 这确实成功地在生成的 HTML 中生成了给定的字符串,但仍然没有工作,这让我想到了我的第二个(更重要的是,老实说)问题。
我根本无法让静态文件工作。我在这里尝试了几种不同的方法。我尝试在上述每个STATIC_*
变量中放置绝对和相对路径(以各种组合),我尝试使用等效的MEDIA_URL
变量,并且我尝试将以下内容放入我的urls.py
:
urlpatterns = ('',
# ...
(r'^static_files/(?P<path>.*)$',
'serve', {
'document_root': '/path/to/django/dir/static_files/',
'show_indexes': True
}
),
)
(我从http://www.arthurkoziel.com/2008/09/02/handling-static-files-django/ 获取了上面的片段。)
现在我应该注意,一旦初始开发完成,我希望最终能够从并行 Apache 进程中提供静态文件,但我仍然很想知道我做错了什么。我无法在网上或 StackOverflow 上找到关于静态文件的相当全面的教程。
非常感谢所有帮助。
编辑:如果它很重要,我在 Windows 7 上使用 Python 2.7。