Как (легко) поместить переменные python из Django в html?
В одном из моих проектов Django в файле views.py есть код:
from django.shortcuts import render
from django.http import HttpResponse
from .models import *
# Create your views here.
products = Product.objects.all()
product_list = list(products)
def displayhome(request):
return render(request, 'bootstrap/index.html', {'title': product_list[0].title}, {'link': product_list[0].official_path_name})
Теперь, используя этот (очень неуклюжий) метод, я могу поместить строковую версию переменных в html, используя:
{{title}}
Например, . Однако это не позволяет мне оперировать переменными, например, если я пошлю через product_list
, я не смогу получить product_list[0]
. Я смутно знаю об использовании тегов {% %}
вместо {{ }}
, но я (а) не совсем уверен, как они работают, и (б) не знаю, насколько они мощные, например, можно ли использовать их как обычный файл python.
Как я могу использовать переменную из python (скажем, целое число со значением 4) для создания переменного количества элементов html (например, 4 поля)?
Если нет простого способа выполнить python в html, есть ли способ вместо этого поместить мои переменные python в javascript и затем как-то использовать их в html?
Я использую эту структуру для своих представлений:
def your_view(request):
myResult = MODEL_NAME.objects.all()
context = {
"variable1":[0,1,2,3,4,5,6],
"variable2":"This is the variable 2",
"variable3":"This is the variable 3",
"variable4":myResult
}
return render(request, 'your_html.html', context)
и вы можете получить доступ к переменным в шаблоне следующим образом
<!-- See variables by index -->
{{ variable1.0 }}
{{ variable1.2 }}
<!-- Iterate over variables -->
{% for x in variable1 %}
{{ x }}
{% endfor %}
<!-- Variable 2 & 3 -->
{{ variable2 }}
{{ variable3 }}
<!-- Query set result -->
{% for x in variable4 %}
{{ x.id }}
{{ x.name }} <!-- and all the other values from your model -->
{% endfor %}