#python #css #django
#python #css #django
Вопрос:
crispy forms не работает, у меня нет никаких ошибок, но формы по-прежнему работают нормально. Хотелось бы получить помощь в этом. Я не понимаю, у меня никогда не было этой проблемы, спасибо
У меня есть 'crispy_forms'
в моем INSTALLED_APPS, и он установлен правильно
Я перепробовал много вещей, но не получил никакого результата
newhome.html
{% load crispy_forms_tags %}
{% load static %}
{% block content %}
<link rel="stylesheet" type="text/css" href="{% static 'pools/newmain.css' %}">
<!-- Load an icon library to show a hamburger menu (bars) on small screens -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<div class="topnav" id="myTopnav">
<a href="#home" class="active">Home</a>
<a href="#news">News</a>
<a href="#contact">Contact</a>
<a href="#about">About</a>
<a href="javascript:void(0);" class="icon" onclick="myFunction()">
<i class="fa fa-bars"></i>
</a>
</div>
<div class="content-section">
<form method="POST" action="">
{% csrf_token %}
{{ form|crispy }}
<button class="btn btn-outline-info" type="submit">Send</button>
</form>
</div>
{% endblock %}
newmain.css
body {
background-color: coral;
}
/* Add a black background color to the top navigation */
.topnav {
background-color: #333;
overflow: hidden;
}
/* Style the links inside the navigation bar */
.topnav a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
}
/* Change the color of links on hover */
.topnav a:hover {
background-color: #ddd;
color: black;
}
/* Add an active class to highlight the current page */
.topnav a.active {
background-color: #4CAF50;
color: white;
}
/* Hide the link that should open and close the topnav on small screens */
.topnav .icon {
display: none;
}
views.py
def newhome(request):
form = NewTask
if request.method == "POST":
form = NewTask(request.POST)
if form.is_valid():
form.save()
task = form.cleaned_data["title"]
print(task)
else:
form = NewTask()
return render(request, "pools/newhome.html", {"form": form})
return render(request, "pools/newhome.html", {"form": form})
Ответ №1:
1.In док, там написано:
crispy-forms не включает статические файлы. Вам нужно будет самостоятельно включить соответствующие соответствующие медиафайлы в зависимости от того, какой фреймворк CSS (пакет шаблонов) вы используете. Это может включать один или несколько файлов CSS и JS. Прочитайте документы CSS framework для получения справки о том, как его настроить.
Вы вставили сюда весь код HTML-файла? Я не вижу ни одного фреймворка CSS, который упоминался в документе cryspy-forms, например bootstrap4
.
Обратите внимание, что вам необходимо добавить в свой html
см. Веб-сайт bootstrap для cdn 2
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA 058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5 76PVCmYl" crossorigin="anonymous"></script>
Не забудьте удалить историю просмотров!
- после того, как вы исправили часть css, ваша форма может работать неправильно. попробуйте заменить на:
def newhome(request):
if request.method == "POST":
form = NewTask(request.POST)
if form.is_valid():
task = form.cleaned_data["title"] # this is good practice because later you might want to add things like user = request.user before saving the form.
form.save()
print(task)
else:
print(form.errors)
else:
form = NewTask()
return render(request, "pools/newhome.html", {"form": form})
Комментарии:
1. это действительно проблема, вам нужно добавить css и js в ваш html-файл. смотрите обновленный ответ
Ответ №2:
У меня есть ‘crispy_forms’ в моих INSTALLED_APPS, и он установлен правильно
Возможно, вы поместили ‘crispy_forms’ в INSTALLED_APPS, но указали ли вы свой пакет шаблонов в своем settings.py ? например, CRISPY_TEMPLATE_PACK = 'uni_form'
Комментарии:
1. да, у меня есть
CRISPY_TEMPLATE_PACK = 'bootstrap4'
в настройках, я тоже пробовалCRISPY_TEMPLATE_PACK = 'uni_form'
, и это тоже не работает