【问题标题】:Django Search form not submitting valueDjango 搜索表单未提交值
【发布时间】:2018-10-23 00:57:20
【问题描述】:

我的 django 应用中有一个搜索表单。我想添加一个过滤器选项,因此我添加了一个单选按钮,用于按名称按字母升序和降序进行过滤。搜索的值正在传递,但单选按钮的值为

    <form method='GET' action='{% url "search:catalog-query" %}' class="form my-2 my-lg-0 search-form">
  <div class='input-group'>
    <input class="form-control" type="text" placeholder="Search" name='q' aria-label="Search" value='{{ request.GET.q }}'>

    <span class='input-group-btn'>
        <button class="btn btn-outline-success" type="submit">Search</button>
    </span>
    </div>
    <div>
        Sort Name: 
        <label for="id_sort_up">Ascending</label><input type="radio" name="name_sort" id="id_sort" value='{{ request.GET.name_sort }}'>
        <label for="id_sort_down">Descending</label><input type="radio" name="name_sort" id="id_sort" value='{{ request.GET.name_sort }}'>
    </div>
</form>

urls.py

url(r'^catalog/$', SearchCatalogView.as_view(), name='catalog-query'),

view.py

class SearchCatalogView(ListView):
template_name = "search/view-catalog.html"
print('search catalog')

def get_context_data(self, *args, **kwargs):
    context = super(SearchCatalogView, self).get_context_data(*args, **kwargs)
    query = self.request.GET.get('q')
    context['query'] = query
    return context

def get_queryset(self, *args , **kwargs):
    print('get_queryset')
    request = self.request
    method_dict = request.GET
    query = method_dict.get('q', None) # method_dict['q']
    print(method_dict)
    if query is not None:
        return AAAA.objects.search(query)
    return AAAA.objects.features()

当我打印 method_dict 时,无论我选择哪个单选按钮,我都会得到 &lt;QueryDict: {'q': ['searched_option'], 'name_sort': ['']}&gt;

【问题讨论】:

  • 尝试将value="{{ request.GET.name_sort }}"更改为“升序”和“降序”,然后打印method_dict
  • method_dict 与这些更改完全相同。

标签: django radio-button forms


【解决方案1】:
 Sort Name:
    <label for="id_sort_up">Ascending</label>
    <input type="radio" name="name_sort" id="id_sort_up" value='Ascending'>
    <label for="id_sort_down">Descending</label>
    <input type="radio" name="name_sort" id="id_sort_down" value='Descending'>

会给 method dict <QueryDict: {'q': ['searched_option'], 'name_sort': ['Ascending']}> 要么 method dict <QueryDict: {'q': ['searched_option'], 'name_sort': ['Descending']}>

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    相关资源
    最近更新 更多