Bootstrap不会设置为Django应用程序

时间:2017-12-19 14:47:47

标签: python css django bootstrap-4

Bootstrap未设置为我的Django应用程序。在谷歌控制台中,无法加载资源:服务器响应状态为404(未找到)bootflat.min.css错误发生。我在settings.py中写道

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
DEBUG =True

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, "static/")

STATICFILES_DIRS = [os.path.join(BASE_DIR,'bootflat.github.io'), ]
PythonServer_nginx.conf中的

server {
    # the port your site will be served on
    listen      8000;
    # the domain name it will serve for
    server_name MyServerIPAdress; # substitute your machine's IP address or FQDN
    charset     utf-8;

    # max upload size
    client_max_body_size 75M;   # adjust to taste

    location /static {
        alias /home/ubuntu/PythonServer/PythonServer/accounts/static; # your Django project's static files - amend as required
    }

    # Finally, send all non-media requests to the Django server.
    location / {
        uwsgi_pass  django;
        include     /home/ubuntu/PythonServer/uwsgi_params; # the uwsgi_params file you installed
    }
}

我不知道为什么Bootstrap没有设置为我的Django应用程序。我运行命令python manage.py collectstatic但没有发生错误。我该如何解决这个问题?我该怎么写呢?

6 个答案:

答案 0 :(得分:9)

我认为该项目在本地运行良好,仅当您使用nginx时才会出现此问题。如果是这种情况,则您在Nginx配置中为 location / static 提到的路径可能是错误的,请尝试从服务器获取静态文件夹的绝对路径,然后查看。

答案 1 :(得分:5)

由于显而易见的原因,我无法测试我的答案,但您的STATICFILES_DIRSSTATIC_ROOT不匹配。如果您将STATICFILES_DIRS更改为[os.path.join(BASE_DIR,"/static/"),'https://bootflat.github.io'],则可能会有效。我这样建议是因为os.path.join带有公共网址的本地路径对我没有意义。

答案 2 :(得分:5)

尝试一下, 在settings.py中:

STATIC_URL = '/static/'
STATICFILES_DIRS = [STATIC_DIR,]

现在,最后添加以下行:

{% load staticfiles %}

现在,将所有引导文件放在项目文件夹下的“静态”文件夹中。

在您的HTML代码上, 您必须使用以下命令加载静态文件:

<link rel="stylesheet" href="{% static "assets/css/bootstrap.min.css" %}">

现在,您可以使用以下方式使用静态文件:

{{1}}

P.s。我的“ bootstrap.min.css”位于“静态”文件夹下,然后是“资产”然后是“ css”文件夹下。

对我来说很完美。

答案 3 :(得分:0)

首先:您将静态引导文件存储在哪里?我建议将它们存储在您在模板中引用它们的应用程序目录中。例如,如果您有一个应用myapp,我会将它们放在/myapp/static/myapp/中。因此,如果我存储bootstrap.css,它将存储在/myapp/static/myapp/bootstrap.css中。

接下来,您需要在模板中引用正确的静态文件夹。对于Bootstrap样式表,href看起来像href = "{% static 'myapp/bootstrap.css' }%"

最后,在您的settings.py文件中添加行STATIC_ROOT = '/home/ubuntu/PythonServer/PythonServer/accounts/static'(根据您写的内容,只需确保它指向的是保存实时静态文件的正确部署文件夹),然后再次运行collectstatic

答案 4 :(得分:0)

首先,您不需要STATICFILES_DIRS,因为django将从INSTALLED_APP中指定的每个settings.py中为您收集静态文件。您需要将bootstrap4添加到INSTALLED_APP

INSTALLED_APPS = [
    ...
    'my_great_app',
    'bootstrap4',
]

您需要像在STATIC_ROOT中一样指定STATIC_URLsettings.py。您需要了解为什么使用每种设置。

  • Django在collect_static命令中使用STATIC_ROOT,该命令收集 来自STATICFILES_DIRS中应用程序和目录的所有静态文件放入 在STATIC_ROOT中。例如,您创建了一个具有以下功能的新应用 本身需要必需的静态文件,请运行./manage.py collect_static 将您的静态文件放入STATIC_ROOT所在的Web服务器(nginx 就您而言)为他们服务。安装时,STATIC_ROOT应该是 显示给/home/ubuntu/PythonServer/PythonServer/accounts/static 在您的nginx配置中可以看到。

  • STATIC_URL用于在您使用时创建静态文件网址 static模板标签。由于文件由nginx提供,因此您需要 特定路径,主机等。

  • STATICFILES_DIRS用于添加不驻留的静态文件 在应用文件夹中。我不建议将它用于您的情况。

在模板上,您需要使用以下内容:

{% extends 'bootstrap4/bootstrap4.html' %}

{% load bootstrap4 %}
{# Display a form #}

<form action="/url/to/submit/" method="post" class="form">
    {% csrf_token %}
    {% bootstrap_form form %}
    {% buttons %}
        <button type="submit" class="btn btn-primary">Submit</button>
    {% endbuttons %}
</form>

来自django-bootstrap4 github repo

通过扩展bootstrap4/bootstrap4.html,您将在HTML中获取所需的CSS和JS文件。借助{% load bootstrap4 %},您可以使用bootstrap4模板标签和过滤器。

答案 5 :(得分:0)

尝试在您的 url.py

中添加以下代码
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += patterns('', (
    r'^static/(?P<path>.*)$',
    'django.views.static.serve',
    {'document_root': settings.STATIC_ROOT}
))

settings.py 中添加静态根变量,如 Luke B

所示
STATIC_ROOT = '/home/ubuntu/PythonServer/PythonServer/accounts/static'

在此处查看文档https://docs.djangoproject.com/en/2.0/howto/static-files/