django在提交表单时没有获取在线参数

时间:2016-09-29 16:34:26

标签: django

我提交了一个包含两个输入的表单来搜索表格。我的代码没有获得' namequery'的价值。而不是在表格中显示所有数据。我在这做错了什么?谢谢你的帮助! 网址是 http://..../chinook/search/?namequery=rand&affquery=

search.html

  <h3 class="labs-background-title">Search results for <em id="search-name">{{ namequery }}</em>:</h3>
  {% if object_list %}
    {% for obj in object_list %}
      {{ obj.lname }} <br />
      {{ obj.clustering }} <br />
  {% endfor %}
  {% else %}
    <h3>No matches found.</h3>
  {% endif %}

views.py

class SearchView(generic.ListView):
model = Pitable 
template_name = 'chinook/search.html'


def get_queryset(self):
    try:
        namequery = self.kwargs['namequery']
    except:
        namequery = ''
    if (namequery != ''):
        object_list = self.model.objects.filter(lname = namequery)
    else:
        object_list = self.model.objects.all()
    return object_list

返回页面显示所有数据,显示{{namequery}}为空。谢谢!

1 个答案:

答案 0 :(得分:2)

这里有很多不妥之处。

首先,'namequery'不是URL kwarg,它是GET查询参数。您需要从PreferenceManager.getDefaultSharedPreferences(getApplicationContext());获取它。

其次,从不使用空白除外。可能发生的唯一例外是KeyError,所以请抓住它。但是编写所有四行的更好方法是:

self.request['namequery']

第三,要在模板中显示namequery的值,您需要将其添加到上下文数据中。

namequery = self.request.GET.get('namequery')