【问题标题】:Can't attach css files or image to Django template无法将 css 文件或图像附加到 Django 模板
【发布时间】:2014-12-06 11:31:21
【问题描述】:

上网时,我找到了一些解决问题的方法。但它没有帮助(Include CSS and Javascript in my django template)最后一个答案。 我在urls.py添加了这个:

urlpatterns += patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
)

这是我的settings.py

CURRENT_PATH = os.path.abspath(os.path.dirname(__file__).decode('utf-8'))

MEDIA_ROOT = os.path.join(CURRENT_PATH, 'media')

MEDIA_URL = '/media/'

STATIC_ROOT = 'static/'

STATIC_URL = '/static/'

STATICFILES_DIRS = (
                    os.path.join(CURRENT_PATH, 'static'),
)

还有我的模板:

<html>

<head lang="en">
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/main.css" />
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/bootstrap.min.css" />
    <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/font-awesome.min" />
    <title></title>
</head>
<body>
{% load staticfiles %}
<div id="modal" class="modal fade">
            <div class="modal-header">
                    <div>Вхід у систему</div>
            </div>
            <div class="modal-body">
                <form action = "/login/" method="post">
                <div>
                    <label for="username">Логін:</label>
                    {{form.username}}
                </div>
                <div>
                    <label for="password">Пароль:</label>
                    {{form.password}}
                </div>
                <br>
                <div>
                    <input type="submit"  value="Submit">
                </div>
                </form>
            </div>
       </div>


<img src="{{STATIC_URL}}ukraine.png" alt="My image"/>
</body>
</html>

因此 CSS 文件无法正常工作,甚至找不到图像。 我为静态文件创建了文件夹:D:\KIT\static\css

【问题讨论】:

  • 尝试更改CURRENT_PATH = os.path.dirname(os.path.dirname(__file__))

标签: django


【解决方案1】:

转自官方documents

  1. 确保您已将django.contrib.staticfiles 包含在INSTALLED_APPS

  2. CURRENT_PATH 是什么?确保它是D:\KIT\

  3. 然后你可以像这样包含它们:

    <link rel="stylesheet" type="text/css" href="{% static "css/main.css" %}" />
    
  4. 确保您的模板以{% load staticfiles %}开头

【讨论】:

  • 别忘了 {% load staticfiles %}
  • 不错,添加到答案中。
【解决方案2】:

您可能忘记运行 collectstatic。在开发过程中每次发生更改时都运行它是非常不切实际的,因此为避免这种情况,您必须修改设置。

将 django.contrib.staticfiles 添加到您的 INSTALLED_APPS 并设置 DEBUG=True,然后 runserver 将为您完成繁重的工作。

我还建议在 {{ STATIC_URL }} 上使用静态模板标签 {% static 'path/to/static.css' %} 并将模板标签加载放在第一行(如果您正在扩展模板,则为第二行) 的模板文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 2018-03-18
    • 2014-06-03
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多