静态文件集合-徽标导航栏不显示

时间:2019-07-07 13:47:40

标签: django

我正在尝试在导航栏上显示图像(徽标)。

我的项目称为“ app_name.ModelName”(其中mysite-project是),它包含应用程序“ manage-py”。

为了上传我的静态文件,我做了以下工作:

1) mysite-project / mysite / settings.py

我添加了:

mysite

2)创建了文件夹STATIC_ROOT = os.path.join(BASE_DIR,"static") STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, '/static/') ] ,并在以下位置添加了我的logo.png:

mysite-project / static / mysite-project / logo.png

3) mysite-project / templates / base.html

static

4)在 mysite-project / mysite / urls.py

{% load staticfiles %}
    <nav class="navbar navbar-expand-lg navbar-light bg-light">
      <a class="navbar-brand" href="{% url 'home' %}">

        <img src="{% static 'mysite/logo.png' %}" height=30 width=30 class="d-inline-block alighn-top" />
        Code of Conduct
      </a>
</nav>

如何,该图片未显示。我认为文件夹的 settings.py 中存在一些问题,但找不到位置

1 个答案:

答案 0 :(得分:1)

问题出在您的STATICFILES_DIRS设置中。如果您加入的路径前面有一个斜杠,那么结果将“忽略”前面的所有参数,之后的所有内容都将相对于root

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, '/static/')  # This will result in "/static/"
]


STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')  # This will result in "<BASE_DIR>/static/"
]

STATIC_ROOT是您要从中提供文件的目录,并且collect_static将用您的所有静态文件填充该目录,STATICFILES_DIRS是Django将从中收集文件的位置。 STATICFILES_DIRS不应包含STATIC_ROOT。项目的通常布局是这样的

myproject/  # The root of your repo
    myproject/
        myapp/
            static/  # This is where you put app specific assets
                ...
        static/  # This is where you put your generic static assets. Add this to STATICFILES_DIRS
            ...
    static/  # This is STATIC_ROOT and where your files are served from after being collected

STATICFILES_FINDERS的默认值将在STATICFILES_DIRS 中出现在每个应用程序的静态目录中。如果您使用的是git,则应将静态文件夹添加到.gitignore