CSS, Bootstrap i Javascript nie działają z Django
Próbuję zbudować aplikację internetową jako końcowy projekt na moim kierunku, ale mam problemy z konfiguracją css za pomocą django. Zrobiłem już kilka rekomendacji w internecie bez powodzenia. Kiedy dodam „styl” do tagów, działa to poprawnie, ale kiedy próbuję użyć pliku „.css”, nie ładuje się. Czy ktoś mógłby mi pomóc, proszę?
Oto moja głowa HTML:
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="{% static 'static/css/index.css' %}" rel="stylesheet" type="text/css">
<link rel="preconnect" href="{% static 'https://fonts.gstatic.com' %}">
<script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDikjsB27i23XRQad382KBcFHKNxzZ--1w&callback=initAutocomplete&libraries=places&v=weekly"
defer
></script>
<link href="{https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet">
<link href="{https://fonts.googleapis.com/css2?family=Sansita+Swashed&display=swap" rel="stylesheet">
<meta name="google" content="notranslate" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="{//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<title>The Queue</title>
</head>
Moje ustawienia.py:
STATIC_URL = '/static/'
STATICFILES_DIRS = [(os.path.join(BASE_DIR, 'static'))]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
mój adres urls.py:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('queueApp.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
if settings.DEBUG:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Katalogi:
├───queueApp
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ urls.py
│ │ views.py
│ │ __init__.py
│ │
│ ├───migrations
│ │ │ __init__.py
│ │ │
│ │ └───__pycache__
│ │ __init__.cpython-38.pyc
│ │
│ ├───templates
│ │ base.html
│ │
│ └───__pycache__
│ admin.cpython-38.pyc
│ models.cpython-38.pyc
│ urls.cpython-38.pyc
│ views.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───queueProject
│ │ asgi.py
│ │ settings.py
│ │ urls.py
│ │ wsgi.py
│ │ __init__.py
│ │
│ └───__pycache__
│ settings.cpython-38.pyc
│ urls.cpython-38.pyc
│ wsgi.cpython-38.pyc
│ __init__.cpython-38.pyc
│
├───static
│ ├───css
│ │ index.css
│ │
│ ├───img
│ └───js
│ index.js
Odpowiedzi
Masz tutaj kilka problemów:
W swoim pliku html, w celu użycia
{% static ... %}
, należy dodać{% load static %}
w sekcji head przed wszystkimi<link..>
itp. Sprawdź dokumenthttps://docs.djangoproject.com/en/3.1/howto/static-files/również należy zmienić
{ % static 'static/css/ .. %}
, aby{ % static 'css/...%}
Dla tych, których nie używasz
{% static ...%}
, masz wiele literówek. Na przykład:
Te mają dodatkowe {
<link href="{https://fonts.googleapis.com/css?family=Roboto:400,700" rel="stylesheet">
<link href="{https://fonts.googleapis.com/css2?family=Sansita+Swashed&display=swap" rel="stylesheet">
Ten link wydaje się błędny.
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
- następny, którego nie powinieneś używać
{% static ..% }
<link rel="preconnect" href="{% static 'https://fonts.gstatic.com' %}">
Ponieważ istnieje wiele błędów, najlepiej będzie usunąć je wszystkie i dodać te wiersze (po usunięciu przyczyny) jeden po drugim, aby rozwiązać ten problem.
może być problem z obsługą plików statycznych. jeśli jeszcze tego nie zrobiłeś, spróbuj sprawdzić:https://docs.djangoproject.com/en/3.1/howto/static-files/
W pliku Settings.py spróbuj zmienić nazwę katalogu STATIC_ROOT na „static” zamiast „staticfiles”.
Twój kod będzie więc wyglądał następująco:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
I dla bezpieczeństwa spróbuj uciekać, python manage.py makemigrations
a potem python manage.py migrate
. Tak więc, jeśli jakiekolwiek zmiany nastąpią w bazach danych, zostaną zastosowane.