0

可能重复:
尝试在开发服务器上提供 django 静态文件 - 未找到

我刚刚进入 Python 和 django 的世界,我无法使用 STATIC_URL 设置我的 URL,我目前正在使用 django 1.4 进行本地开发。我阅读了django 静态文件文档,似乎已经添加了所有需要的内容,但仍然出现 404 错误。我已经阅读了与此相关的其他关于 SO 的问答,并尝试了各种方法,但无法使其发挥作用。

我从控制台得到的错误

http://localhost:8000/blog/static/js/src/models/myfile.js 404 (NOT FOUND) 

我的 index.html 页面是其他页面扩展的主页,它具有以下脚本:

<script src="{{ STATIC_URL }}/js/src/models/myfile.js"></script>

在查看了关于 SO 的其他问题和答案后,我尝试通过添加来编辑我的视图,因为我的 archive.html 正在呈现数据:

from django.template import RequestContext
...
return render_to_response('archive.html', {'categories' : resultSet, 'data': queryData}, context_instance=RequestContext(request))

我的目录结构 -

mysite
|-- manage.py
|-- mysite
    |-- __init__.py
    |-- settings.py
    |-- urls.py
    |-- wsgi.py
 |-- blog
    |-- __init__.py
    |-- models.py
    |-- tests.py
    |-- views.py
    |-- temapltes
        |-- archive.html
        |-- base.html
    |-- static
        |-- js
        |-- myfile.js

我的设置.py

MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = (
    'C:/Python27/Scripts/mysite/blog/static',
# A Bit confused on the path here
)
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    'django.core.context_processors.static',
)
TEMPLATE_DIRS = ( )

INSTALLED_APPS = (
    #..
    'django.contrib.staticfiles',
    'blog',
)

我想我拥有所需的一切,但仍然没有运气。

我哪里出错了,我对设置“STATICFILES_DIRS”路径有点困惑,我怎么能在我的本地机器上让它工作

4

1 回答 1

3

您应该更改目录结构:

应用级别:

/blog/static/blog/js

项目级别:

/static/js

同样在 Django 1.4 中,为了方便起见,您可以使用静态标签:

{% load static %}
<img src="{% static 'js/abacadabra.js' %}" />

最后但并非最不重要的一点是,您可能希望避免硬编码路径,因此请更改:

STATICFILES_DIRS = (
    'C:/Python27/Scripts/mysite/blog/static',
)

到:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)
于 2012-08-23T15:00:48.320 回答