I’ve recently started learning Django and I’ve been having a lot of issues with implementing css into my code. I’ve found a lot of people with the same issue as me but I am still unable to find an answer.
Currently when I run open the website it give me this https://imgur.com/a/0N23s7b
And I’m not sure if this is because of the settings, the actual css or something in the html.
My html boilerplate
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>homepage</title> <link rel="stylesheet" type="test/css" href="{% static'css/home.css' %}"/> </head>
settings.py
DEBUG = True STATIC_ROOT = '' STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), ) ALLOWED_HOSTS = ['127.0.0.1', 'localhost'] STATIC_URL = '/static/'
views.py
from django.contrib import admin from django.urls import path from django.conf import settings from django.conf.urls.static import static from leatherbiscuit.views import index urlpatterns = [ path('admin/', admin.site.urls), path('', index), ] if settings.DEBUG: urlpatterns+=static(settings.STATIC_URL,document_root=settings.STATIC_ROOT)
urls.py
from django.shortcuts import render from django.http import HttpResponse from django.views.generic import TemplateView def index(request): return render(request, 'index.html') def home_view(request): return HttpResponse(request, 'index.html')
Advertisement
Answer
You need to add a space between the name of the template tag and its parameters, so it should be:
↓ a space between static and 'css/home.css' {% static 'css/home.css' %}
The parser of the Django template engine has some peculiarities. For example, a tag should not be spanned over multiple lines, and like in Python’s method calls one should first list the positional parameters and then the named parameters.