我有3个下拉菜单。每个菜单都通过对象上下文传递的变量获取其值。这是视图功能:
def home_page(request):
template = 'path/to/template.html'
cities = City.objects.all()
all_categories = Category.objects.all()
all_sub_category = Sub_Category.objects.all()
context={
'cities': cities,
'all_categories': all_categories,
'all_sub_category': all_sub_category,
}
return render(request, template, context)
模板如下:
{% load staticfiles %}
<select>
{% for city in cities %}
<option value='{{city.city_name}}'>
{{city.city_name}}
</option>
{% endfor %}
</select>
<select>
{% for category in all_categories %}
<option value='{{category.category_name}}'>
{{category.category_name}}
</option>
{% endfor %}
</select>
<select>
{% for sub_category in all_sub_category %}
<option value='{{sub_category.sub_category_name}}' >
{{sub_category.sub_category_name }}
</option>
{% endfor %}
</select>
<a href="http://domain_name/towns/{{city.city_name}}/{{category.category_name}}/{{sub_category.sub_category_name}}"><span > move to next page </span> </a>
问题在于,即使所有变量都显示在下拉菜单中,结果URL也缺少所有三个变量。这是结果链接:
http://127.0.0.1:8000/towns///
我也尝试了以下href:
href="http://domain_name/towns/{{city.city_name.0}}/{{category.category_name.0}}/{{sub_category.sub_category_name.0}}"><span > move to next page </span> </a>
有什么帮助或建议吗?
答案 0 :(得分:2)
您所做的工作不起作用,因为city
变量在for循环之外不存在。
对于其他变量
执行此操作的最佳方法是将所有选择标签包装在表单中。然后通过GET / POST将表单发送到视图。然后从该视图中,您可以重定向到所需的URL。
您还可以使用javascript直接从模板重定向到url,但是我觉得我上面提到的更为简洁