[英]How to preserve form values after submit?
I'm preparing a simple search/filter form for my django project and I would like to have all options kept after clicking 'submit' button.我正在为我的 django 项目准备一个简单的搜索/过滤器表单,我希望在单击“提交”按钮后保留所有选项。 I'm using select options, inputs and checkboxes.
我正在使用选择选项、输入和复选框。
Is there any all-purpose solution for this?是否有任何通用的解决方案? The method used is
GET
Here's the code:使用的方法是
GET
,代码如下:
<form method = "GET" action = ".">
<div class="form-row">
<div class="form-group col-8">
<label for="filter_by_name">Search by name</label>
<div class="input-group">
<input class="form-control py2 border-right-0 border" type="search" name="filter_by_name" placeholder="Name contains.."/>
<span class="input-group-append">
<div class="input-group-text bg-transparent">
<i class="fa fa-search"></i>
</div>
</span>
</div>
</div>
<div class="form-group col-md-4">
<label for="filter_by_shop">Search by shop</label>
<select id="filter_by_shop" class="form-control" name="filter_by_shop">
<option selected>All shops</option>
<option>first shop</option>
<option>second shop</option>
</select>
</div>
</div>
<div class="input-group col-md-8 checkboxes">
<span>
<input type="checkbox" name="first" value="first"\>
<label >first</label>
<input type="checkbox" name="second" value="second"\>
<label >second</label>
<input type="checkbox" name="third" value="third"\>
<label >third</label>
</span>
</div>
<div class="form-group col-md-2">
</div>
<button type="submit" class="btn btn-primary">Search</button>
</div>
</form>
def myView(request):
qs = v_pricenew.objects.all().order_by('PRICE')
filter_by_name = request.GET.get('filter_by_name')
filter_by_shop = request.GET.get('filter_by_shop')
if is_valid_queryparameter(filter_by_name):
qs = qs.filter(NAME__icontains=filter_by_name)
if is_valid_queryparameter(filter_by_shop):
qs = qs.filter(SHOP__icontains = filter_by_shop)
filter_list = []
if first:
filter_list.append('firstCat')
if second:
filter_list.append('secondCat')
if third:
filter_list.append('thirdCat')
if len(filter_list) != 0:
qs = qs.filter(CAT__in = filter_list)
context = {
'queryset': qs
}
return render(request, 'compare_app/main.html', context)
I managed to achieve this using django_filters.FilterSet
and then creating a form using {{myFilter.form}}
but I would like to use my own form, instead of a premade one我设法使用
django_filters.FilterSet
实现了这一点,然后使用{{myFilter.form}}
创建了一个表单,但我想使用我自己的表单,而不是预制表单
创建一个 formy.py 然后你可以在你的表单中添加字段
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.