首页 > 解决方案 > 无法正确实现 wiki 搜索。按查询搜索结果不起作用

问题描述

我是编程新手,正在开发基于 Django 的 wiki 网站。我的问题是搜索。如果您键入 wiki 中已经存在的条目的确切名称,它会正确重定向到描述,但按查询搜索结果不起作用。返回错误:“解码到str:需要一个类似字节的对象,找到NoneType”这是我的代码:

视图.py

    
def search(request):
    """Search form."""
    entries=(util.list_entries())
    q = request.POST.get('q')
    def list_str(entries):
        str1=""
        for i in entries:
            str1 += i
        return  str1
    if q.lower() in list_str(entries).lower():
        return HttpResponseRedirect('wiki/'+q)
    elif q.lower() not in list_str(entries).lower():
        return render(request, "encyclopedia/nomatches.html") 
    else:
        empty=[]      
        for title in entries:
            if q.lower() in title.lower():
                results=empty.append()
            return render(request, "encyclopedia/results.html", {'res':results}) 

base.html

 <form action="{% url 'search' %}" method="post">{% csrf_token %}
  <input class="search" type="text" name="q" placeholder="Search Encyclopedia">
 </form>

结果.html

{% extends "encyclopedia/layout.html" %} {% block title %} Search Results {%
endblock %} {% block body %}
<h1>Search results</h1>

<ul>
  {% for result in res %}
  <li>
    <a href="{% url 'page' entry %}"> {{ result }} </a>
  </li>
  {% endfor %}
</ul>

{% endblock %}

还有一个 util.list_entries() 函数,它返回所有百科全书条目名称的列表。我选择不包含它,但如果需要它或任何其他代码,请告诉我。答案将不胜感激。:)

错误信息:

25/Apr/2021 13:24:22] "GET / HTTP/1.1" 200 1866
[25/Apr/2021 13:24:23] "POST /search HTTP/1.1" 302 0
Internal Server Error: /wiki/c
Traceback (most recent call last):
  File "C:\Users\levan\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\levan\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\django\core\handlers\base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\levan\Documents\wiki\wiki\encyclopedia\views.py", line 19, in viewpage
    "content":markdowner.convert(content),
  File "C:\Users\levan\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\markdown2.py", line 312, in convert
    text = unicode(text, 'utf-8')
TypeError: decoding to str: need a bytes-like object, NoneType found
[25/Apr/2021 13:24:23] "GET /wiki/c HTTP/1.1" 500 68024

标签: pythonhtmldjango

解决方案


推荐阅读