Скрытие и отображение элементов внутри HTML-шаблона Django
У меня есть 2 кнопки orders
, и suppliers
, и я хочу отображать данные в веб-приложении Django при нажатии на соответствующую кнопку. Для этого my home.html
выглядит как
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".button_order").click(function(){
$(".myorders").show();
$(".mysupplier").hide();
});
$(".button_supplier").click(function(){
$(".myorders").hide();
$(".mysupplier").show();
});
});
</script>
syle.css
выглядит как;
.myorders,
.mysupplier{
font-size: 25px;
display: none;
}
Это работает совершенно нормально, пока я не использую обычные данные, например;
<body>
{%block content %}
<button class="button_order" >ORDERS</button>
<button class="button_supplier" >SUPPLIER</button>
<p class="myorders" >
This is my order
</p>
<p class="mysupplier">
my supplier is cool
</p>
</body>
Но когда я пытаюсь использовать данные в <p class="mysupplier">
или <p class="myorders" >
из моих баз данных, свойство hide больше не работает, как показано ниже.
<p class="myorders">
{% for element in orders %}
{% for key,val in element.items %}
<ul><li>{{key}}:{{val}}</li></ul>
{% endfor %}
<hr class="new1">
{% endfor %}
</p>
Я должен получать данные о заказе из базы данных только при нажатии на кнопку ORDER, но мой сервер показывает все данные до этого, даже не нажимая на кнопку. Как сохранить свойство скрывать и показывать мои данные.
мой views.py
выглядит как
from django.shortcuts import render
client = MongoClient("mongodb://localhost:27017/")
db=client.inventory_data
def home(request):
collection_data_1 = db['orders']
orders = list(collection_data_1.find())
collection_data_2= db['suppliers']
suppliers = list(collection_data_2.find())
return render(request,'home.html',{'orders': orders,'suppliers':suppliers})
Цикл в шаблоне выполняется при рендеринге шаблона. Вы передаете все ваши данные из представления в шаблон. если вы просто хотите скрыть их от отображения, добавьте в ваш js:
<script>
$(document).ready(function(){
$(".mysupplier").hide();
$(".myorders").hide();
$(".button_order").click(function(){
$(".myorders").show();
$(".mysupplier").hide();
});
$(".button_supplier").click(function(){
$(".myorders").hide();
$(".mysupplier").show();
});
});
</script>
но если вы хотите динамически получать текущие данные из базы данных по нажатию кнопки, я рекомендую использовать htmx (htmx.org)