1

我刚开始使用 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.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" />
...

在views.py中:

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))

有什么见解吗?

4

1 回答 1

1
  • STATIC_URL是一个相对路径(static/),这意味着所有静态文件都将相对于当前页面进行搜索。Django 的测试服务器不期望这种行为,因此不会匹配静态 URL,从而触发 404 错误。您需要将该路径设为绝对路径,而不是相对于您的页面(/static/例如)

  • 将 Django 的静态文件系统与测试服务器一起使用时,您需要使用./manage.py collectstatic

  • 我也强烈建议使用{% static 'signup.css' %}语法而不是{{ STATIC_URL }}signup.css. 请注意,如果您使用这种替代格式,则需要 {% load static %} 在文件中较早的位置包含。

于 2013-03-20T08:54:14.993 回答