django не может заставить stati c css работать в базе шаблонов. html - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь настроить файл 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 %}

, и он будет работать хорошо, но я хотел бы, чтобы код вызывался из файла стиля. css в моем базовом файле. html file.

Я не могу получить файл 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 / sites-enabled / site stati c info.

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})

ОБНОВЛЕНО:

Я могу просмотреть URL

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

1 Ответ

0 голосов
/ 08 апреля 2020

Я бы предложил использовать тег 'stati c', см. https://docs.djangoproject.com/en/3.0/ref/templates/builtins/#static. Ссылка в вашей базе. html будет тогда:

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

Не забудьте загрузить тег вверху вашего шаблона:

{% load static %}

Вы можете указать, где Django ищет stati c файлов в параметре STATICFILES_DIRS в вашем файле настроек, например:

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

См. https://docs.djangoproject.com/en/3.0/ref/settings/#staticfiles -dirs для получения дополнительной информации о том, как установить это.

...