LoginSignup
1ss1000000000
@1ss1000000000 (Kotsu Pon)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

{% load static%}でcssファイルが読み込まれない

解決したいこと

Djangoでレビューアプリを作成しています。
本に沿ってやっているのですが、手順通りやってもCSSファイルがHTMLに反映されません。

発生している問題・エラー

CSSのstyleが反映されない

該当するソースコード(list.html)

{% extends 'base.html' %}
{% load static %}
{% block header %}
<link rel = 'stylesheet' type="text/css" href = "{% static 'style.css' %}">
{% endblock header %}
{% block content %}
  <section>
    <h1 style="text-align: center;">Blog</h1>
  </section>
  <div class = "container">
  {% for item in object_list %}
  <div class="card">
    <h5 class="card-header">{{item.title}}</h5>
    <div class="card-body">
      <h5 class="card-title">投稿者:{{item.author}}</h5>
      <h6 class="card-title">レビューが参考になった人:{{item.useful_review}}</h6>
      <a href = "{% url 'list'  %}"class 'btn btn-primary'>詳細</a>
    </div>
  </div>
  {% endfor %}
  </div>
{% endblock content %}

base.html

<html lang="en">
  <head>
    {% block header %}
    {% endblock header%}
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6" crossorigin="anonymous">

  </head>
  <body>
    {% block content%}
    {% endblock content%}
    <!-- Optional JavaScript; choose one of the two! -->

    <!-- Option 1: Bootstrap Bundle with Popper -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>
  </body>
</html>

ディレクトリ構造

├─media
├─reviewpost
│  ├─migrations
│  │  └─__pycache__
│  └─__pycache__
├─reviewproject
│  └─__pycache__
├─static
   └─style.css
└─templates
   └─base.html
   └─list.html

※追記

setting.py

DEBUG = True
・・・・・・・・・・・・・省略
STATIC_URL = '/staticfile/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')
1

2Answer

setting.pyに以下の設定を追加してみてください。

setting.py
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static'),
]

STATIC_ROOTは、django-admin collectstaticで静的ファイルを集める宛先をしていする設定です。
runserverで動くテストサーバの静的ファイル配布元はSTATICFILES_DIRSで設定します。

開発時は、STATICFILES_DIRSで設定したパスにファイルを格納しておいて、本番デプロイ時にdjango-admin collectstaticでSTATIC_ROOTで設定したパスにファイルをデプロイし、静的ファイルはdjango経由ではなく、nginxやapache等のwebサーバで直接ファイルを配布する想定になってます。

また、STATICFILES_DIRSに何も設定しなくてもappのサブディレクトリ配下のstaticディレクトリは対象に含まれます(例:reviewpost/static等)

https://docs.djangoproject.com/ja/3.2/howto/static-files/
https://docs.djangoproject.com/ja/3.2/ref/settings/#std:setting-STATICFILES_DIRS

3Like

Comments

  1. @1ss1000000000

    Questioner
    CSSが反映されました。ありがとうございます。
    本番環境とテストサーバーで使用するものが違うのですね!
    勉強になりました。本当にありがとうございます。

setting.pySTATIC_URL = '/staticfile/'を、STATIC_URL = '/static/'としてみるのはいかがでしょうか?

0Like

Comments

  1. @1ss1000000000

    Questioner
    試してみたのですが、やはり反映されませんでした。。。
  2. その際に、サーバーの再起動はされているでしょうか?
    もし、されなかった場合は、再起動をお試しください。

    あと、コンソールにエラーは出ていないというお話ですが、レンダリングされたページにエラーは出ていますか?
    ページのソースを表示した際、`link`タグの`href`はどうなっているでしょう?

Your answer might help someone💌