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但没有发生错误。我该如何解决这个问题?我该怎么写呢?
答案 0 :(得分:9)
我认为该项目在本地运行良好,仅当您使用nginx时才会出现此问题。如果是这种情况,则您在Nginx配置中为 location / static 提到的路径可能是错误的,请尝试从服务器获取静态文件夹的绝对路径,然后查看。
答案 1 :(得分:5)
由于显而易见的原因,我无法测试我的答案,但您的STATICFILES_DIRS
和STATIC_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_URL
和settings.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/