将样式表链接到Django模板

时间:2014-10-07 13:47:43

标签: django django-templates

我一直在关注this tutorial,现在在 / static / styles / 中有一个样式表。

问题在于模板没有选择这个:

<html>
    <head>    
        <link rel="stylesheet" type="text/css" href="static/css/stylesheet.css" />
        <title>Search</title>
    </head>
    <body>
        ...

我的设置文件中是否需要某些内容?我哪里错了?

我的项目结构是:

project
    - manage.py
    - project
        - static
        - templates
        -  __init__
        - etc..

修改 我的urls.py现在看起来像这样:

from django.conf.urls import patterns, include, url
from bible import views
from django.contrib import admin
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'bible.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^verses/', views.search),
) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

这是我的view.py文件

from django.http import HttpResponse, Http404
from django.shortcuts import render
from bible.models import TBbe, TBookNames


def search(request):
    errors = []
    if 'b' in request.GET:
        if 'c' in request.GET:
            if 'v' in request.GET:
                book = request.GET['b']
                chapter = request.GET['c']
                verse = request.GET['v']
                verses = TBbe.objects.filter(b=book, c=chapter, v=verse)
                book = TBookNames.objects.filter(id=book)
                books = TBookNames.objects.all;
                return render(request, 'verses.html', {'verses': verses, 'book': book, 'books':   books})
            else:
                raise Http404()
        else:
            raise Http404()
    else:
        books = TBookNames.objects.all;
        return render(request, 'search_verses.html', {'books': books})

4 个答案:

答案 0 :(得分:4)

问题似乎是我在settings.py文件中需要以下代码:

STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'static').replace('\\','/'),
)

与引用我的templates文件夹的代码相同。如果将静态文件放在同一级别,它应该可以工作。这也提供了你在这里遵循每个人的建议,导入静态等。

答案 1 :(得分:1)

  1. 确保在settings.py
  2. 中定义了静态目录
  3. {%load staticfiles%}
  4. {%static&#39; css / mystyle.css&#39; %}您需要参考

答案 2 :(得分:0)

首先,您应该有一个前导斜杠:

href="/static/css/stylesheet.css" 

但实际上你应该使用静态标签:

{% load static %}
...
href="{% static 'css/stylesheet.css' %}"

答案 3 :(得分:0)

您需要将以下行以及加载静态和静态规则以及调试模式为true添加到settings.py中。无需在urls.py文件中添加任何内容。 Django会自动在每个应用程序文件夹中找到静态文件夹。这是我从文档https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-STATICFILES_FINDERS中找到的。

for