在 Django 模板中,for
循环通常用于遍历一个列表或字典。如果你需要在 for
循环中传递两个参数,可以通过以下几种方法实现:
你可以将需要传递的两个参数封装在一个字典中,然后将这些字典放入一个列表中。在模板中遍历这个列表时,就可以同时访问这两个参数。
views.py
from django.shortcuts import render
def my_view(request):
data = [
{'name': 'Alice', 'age': 30},
{'name': 'Bob', 'age': 25},
{'name': 'Charlie', 'age': 35}
]
return render(request, 'my_template.html', {'data': data})
my_template.html
{% for item in data %}
<p>Name: {{ item.name }}, Age: {{ item.age }}</p>
{% endfor %}
如果你需要在多个地方传递两个参数,可以考虑创建一个自定义模板标签。
templatetags/my_tags.py
from django import template
register = template.Library()
@register.inclusion_tag('my_partial.html')
def my_tag(name, age):
return {'name': name, 'age': age}
views.py
from django.shortcuts import render
from .templatetags.my_tags import my_tag
def my_view(request):
names = ['Alice', 'Bob', 'Charlie']
ages = [30, 25, 35]
return render(request, 'my_template.html', {'names': names, 'ages': ages})
my_template.html
{% load my_tags %}
{% for name, age in zip(names, ages) %}
{% my_tag name age %}
{% endfor %}
my_partial.html
<p>Name: {{ name }}, Age: {{ age }}</p>
如果你需要在多个模板中使用相同的两个参数,可以考虑使用上下文处理器。
context_processors.py
def my_context(request):
return {'name': 'Alice', 'age': 30}
settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'myapp.context_processors.my_context', # 添加这一行
],
},
},
]
my_template.html
<p>Name: {{ name }}, Age: {{ age }}</p>
以上三种方法都可以在 Django 模板中传递两个参数:
选择哪种方法取决于你的具体需求和应用场景。
领取专属 10元无门槛券
手把手带您无忧上云