Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 加载不带搜索查询的URL_Python_Django_Http_Search_Get - Fatal编程技术网

Python 加载不带搜索查询的URL

Python 加载不带搜索查询的URL,python,django,http,search,get,Python,Django,Http,Search,Get,DJANGO/PYTHON 我正在试着加载。如果用户在此页面上的中输入数据,则表单将向数据库发送搜索查询。我的问题是没有加载–它会导致异常值为“search\u query”的“MultiValueDictKeyError”异常类型。但是,当用户将数据提交到表单中时,(即)页面将加载。我正试图使其在用户无需提交搜索查询的情况下加载 以下是我的查看功能: def index(request): . . . num_of_word = [] bookInstance_tit

DJANGO/PYTHON 我正在试着加载。如果用户在此页面上的中输入数据,则表单将向数据库发送搜索查询。我的问题是没有加载–它会导致异常值为“search\u query”的“MultiValueDictKeyError”异常类型。但是,当用户将数据提交到表单中时,(即)页面将加载。我正试图使其在用户无需提交搜索查询的情况下加载

以下是我的查看功能:

def index(request):
   . . .
     num_of_word = []
     bookInstance_titles = []
     bookInstance_ids = []
     num_of_word = BookInstance.objects.filter(status='a',      book__title__contains=request.GET['search_query']).count()
bookInstances = BookInstance.objects.filter(status='a', book__title__contains=request.GET['search_query'])
     for i in bookInstances:
        bookInstance_titles.append(str(i.book))
        bookInstance_ids.append(str(i.id))

    context = {
    . . .
    'num_of_word': num_of_word,
    'bookInstance_titles': bookInstance_titles,
    'bookInstance_ids': bookInstance_ids,
}
我认为问题在于变量(num_of_word和bookInstances)试图访问请求的搜索查询,而/catalog/request没有搜索查询。经过研究,我仍然不知道如何解决这个问题


谢谢大家!

您尝试在GET查询不存在时访问它。您必须检查request.GET中是否存在搜索查询,或者仅对其使用.GET函数。见下文:

def index(request):
     . . .
     num_of_word = []
     bookInstance_titles = []
     bookInstance_ids = []
     num_of_word = BookInstance.objects.filter(status='a', book__title__contains=request.GET.get('search_query', '').count()
     bookInstances = BookInstance.objects.filter(status='a', book__title__contains=request.GET.get('search_query', ''))
     for i in bookInstances:
         bookInstance_titles.append(str(i.book))
         bookInstance_ids.append(str(i.id))
    context = {
         . . .
         'num_of_word': num_of_word,
         'bookInstance_titles': bookInstance_titles,
         'bookInstance_ids': bookInstance_ids,
    }

希望它能起作用。根据您的代码使用以下选项

    if request.method == 'GET' and 'q' in request.GET: #q is search Input field reference 
        num_of_word = []
        bookInstance_titles = []
        bookInstance_ids = []
        num_of_word = BookInstance.objects.filter(status='a', book__title__contains=request.GET.get('search_query', '').count()
        bookInstances = BookInstance.objects.filter(status='a', book__title__contains=request.GET.get('search_query', ''))
        for i in bookInstances:
            bookInstance_titles.append(str(i.book))
            bookInstance_ids.append(str(i.id))
        context = {
            . . .
            'num_of_word': num_of_word,
            'bookInstance_titles': bookInstance_titles,
            'bookInstance_ids': bookInstance_ids,
        }
    else{
        context = {
             . . .
             'num_of_word': "", #What you want to pass
             'bookInstance_titles': "", #What you want to pass
             'bookInstance_ids': "",  #What you want to pass
        }
    }