Bootstrap не установлен в приложение Django
Bootstrap не установлен для моего приложения Django. В консоли Google Не удалось загрузить ресурс: сервер ответил со статусом 404 (Not Found) Ошибка 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 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 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, но ошибки не возникает. Как я должен это исправить? Что мне написать?
Ответы
Ответ 1
Я предполагаю, что проект работает нормально локально, эта проблема возникает только при использовании nginx. Если это так, вероятно, путь, который вы указали в конфигурации nginx для местоположения/статики, неверен, попробуйте получить абсолютный путь к статической папке с сервера и посмотреть.
Ответ 2
У меня нет возможности проверить мой ответ по очевидной причине, но ваши STATICFILES_DIRS
и STATIC_ROOT
не совпадают. Если вы измените STATICFILES_DIRS
на [os.path.join(BASE_DIR,"/static/"),'https://bootflat.github.io']
, это может сработать. Я предложил так, потому что для меня не имеет смысла использовать os.path.join
локальный путь с открытым URL-адресом.
Ответ 3
Попробуйте это, В settings.py:
STATIC_DIR = os.path.join(BASE_DIR,"static")
Теперь, наконец, добавьте следующие строки:
STATIC_URL = '/static/'
STATICFILES_DIRS = [STATIC_DIR,]
Теперь поместите все ваши файлы начальной загрузки в "статическую" папку в папке проекта.
В вашем HTML-коде вам нужно загрузить статические файлы, используя:
{% load staticfiles %}
Теперь вы можете использовать свои статические файлы, используя:
<link rel="stylesheet" href="{% static "assets/css/bootstrap.min.css" %}">
Ps my 'bootstrap.min.css' присутствует в папке "статические", а затем "активы", а затем папка "css".
Он отлично работает для меня.
Ответ 4
Во-первых: где вы храните свои статические файлы начальной загрузки? Я рекомендую хранить их в каталоге приложения, где вы ссылаетесь на них в шаблоне. Например, если у вас есть приложение myapp
я бы поставил их в /myapp/static/myapp/
. Поэтому, если я /myapp/static/myapp/bootstrap.css
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
.
Ответ 5
Прежде всего вам не нужен STATICFILES_DIRS
поскольку django будет собирать статические файлы для вас из каждого INSTALLED_APP
указанного в ваших settings.py
. Вам нужно добавить bootstrap4
в INSTALLED_APP
:
INSTALLED_APPS = [
...
'my_great_app',
'bootstrap4',
]
Вам нужно указать STATIC_ROOT
и STATIC_URL
как и в ваших settings.py
. Вам нужно понять, почему вы используете каждую настройку.
-
Django использует STATIC_ROOT
в команде collect_static, которая собирает все статические файлы из приложений и каталогов в STATICFILES_DIRS
STATIC_ROOT
. Например, вы создали новое приложение, в котором требуются статические файлы, вы запускаете ./manage.py collect_static
чтобы поместить свои статические файлы в STATIC_ROOT
где их обслуживает веб-сервер (nginx в вашем случае). При установке STATIC_ROOT
следует показывать /home/ubuntu/PythonServer/PythonServer/accounts/static
как показано в вашей конфигурации nginx.
-
STATIC_URL
используется для создания статических URL-адресов файлов при использовании тега static
template. Поскольку файлы обслуживаются 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
вы получите требуемые файлы css и js в своем html. С помощью {% load bootstrap4 %}
вы можете использовать tempatetags и фильтры bootstrap4.
Ответ 6
Попробуйте добавить следующий код в свой 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/