简体   繁体   English

提交后如何保留表单值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM