如何使用Django作为后端在HTML的href链接中获取选定的选项

时间:2018-10-28 18:37:04

标签: html django

我有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>

有什么帮助或建议吗?

1 个答案:

答案 0 :(得分:2)

您所做的工作不起作用,因为city变量在for循环之外不存在。
 对于其他变量

执行此操作的最佳方法是将所有选择标签包装在表单中。然后通过GET / POST将表单发送到视图。然后从该视图中,您可以重定向到所需的URL。

您还可以使用javascript直接从模板重定向到url,但是我觉得我上面提到的更为简洁