我提交了一个包含两个输入的表单来搜索表格。我的代码没有获得' 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}}为空。谢谢!
答案 0 :(得分:2)
这里有很多不妥之处。
首先,'namequery'不是URL kwarg,它是GET查询参数。您需要从PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
获取它。
其次,从不使用空白除外。可能发生的唯一例外是KeyError,所以请抓住它。但是编写所有四行的更好方法是:
self.request['namequery']
第三,要在模板中显示namequery的值,您需要将其添加到上下文数据中。
namequery = self.request.GET.get('namequery')