Django 无法让静态 CSS 在 template base 中工作.html



我正在尝试设置一个站点范围的css文件。

如果我直接将 css 放在我的块内容中,我的 css 将呈现

cat register/templates/register/register.html        
{% extends "base.html" %}
{% block title %}Create an Account{% endblock %}

{% load crispy_forms_tags %}
{% block content %}
<style>
.registration_base {
padding-top: 50px;
margin: auto;
width: 30%;
}
</style>
<div class="registration_base">
<form method="POST" class="form-group">
{% csrf_token %}
{{ form|crispy }}
<button type="submit" class="btn btn-success">Register</button>
</form>
</div>
{% endblock %}

它会正常工作,但我希望从我的 base.html 文件中的样式.css文件站点范围调用的代码。

我无法让 css 文件实际渲染。

在我的

templates/base.html

我有 更新:

$ cat templates/base.html        
<!doctype html>
<html>
<head>
<title>Universal Trader</title>
{% load static %}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare
.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<link rel="stylesheet" type="text/css" href={% static "/static/style.css" %}>

</head>
<body>
{% include 'navbar.html' %}
{% block content %}
replace me
{% endblock %}
</body>
</html>

在我的

register/static/style.css

我有相同的 css 代码:

.registration_base {
padding-top: 50px;
margin: auto;
width: 30%;
}

我可以跑

#python3 manage.py findstatic style.css
Found 'style.css' here:
/home/user/www/src/register/static/style.css

它找到了它,但我的 CSS 格式永远不会改变。

我安装了该应用程序

site/settings.py

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'pages',
'register.apps.RegisterConfig',
'crispy_forms',
]

更新 settings.py

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

更新了 NGINX/启用站点/站点静态信息。

server{
location /static {
alias /home/user/www/src/exchange/static; # your Django project's static files - amend as required
}
}

如何正确包含站点范围的 css 文件?

更新:

#cat register/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User    
class RegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ["username", "password1", "password2", "email"]

#cat register/views.py        
from django.shortcuts import render, redirect
from django.contrib.auth.forms import UserCreationForm
from .forms import RegisterForm
# Create your views here.
def register(response):
if response.method == "POST":
form = RegisterForm(response.POST)
if form.is_valid():
form.save()
return redirect("/")
else:
form = RegisterForm()
form = RegisterForm()
return render(response, "register/register.html",{"form":form})

更新:

我可以浏览网址

http://192.168.42.13:8080/static/style.css

很好,但我的基地.html不能,似乎

我重新启动了服务器。同样的问题。

再次更新:

甚至

<link rel="stylesheet" type="text/css" href={% static "http://192.168.42.13/static/style.css" %}>

基本失败.html

我建议使用"静态"标签,请参阅 https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#static。然后.html您基地中的链接将是:

<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}">

不要忘记在模板顶部加载标签:

{% load static %}

你可以在设置文件的 STATICFILES_DIRS 参数中指定 Django 在哪里查找静态文件,如下所示:

STATICFILES_DIRS = [
os.path.join(PROJECT_DIR, 'static'),
]

有关如何设置此项的详细信息,请参阅 https://docs.djangoproject.com/en/3.0/ref/settings/#staticfiles-dirs。

最新更新