django 搜索功能的实现

一个很有趣的个人博客,不信你来撩 fangzengye.com



前端表单

将数据送到后端

<form method="get" action="/search/">
  {% csrf_token %}
  <input type="search" placeholder="搜索" required>
  <button type="submit">搜索</button>
</form>

后端views.py


def search(request):
    q = request.GET.get('q')
    error_msg = ''
<span class="token keyword">if</span> <span class="token operator">not</span> q<span class="token punctuation">:</span>
    error_msg <span class="token operator">=</span> <span class="token string">'请输入关键词'</span>
    <span class="token keyword">return</span> render<span class="token punctuation">(</span>request<span class="token punctuation">,</span> <span class="token string">'blog/errors.html'</span><span class="token punctuation">,</span> <span class="token punctuation">{<!-- --></span><span class="token string">'error_msg'</span><span class="token punctuation">:</span> error_msg<span class="token punctuation">}</span><span class="token punctuation">)</span>

post_list <span class="token operator">=</span> Post<span class="token punctuation">.</span>objects<span class="token punctuation">.</span><span class="token builtin">filter</span><span class="token punctuation">(</span>title__icontains<span class="token operator">=</span>q<span class="token punctuation">)</span>
<span class="token keyword">return</span> render<span class="token punctuation">(</span>request<span class="token punctuation">,</span> <span class="token string">'blog/results.html'</span><span class="token punctuation">,</span> <span class="token punctuation">{<!-- --></span><span class="token string">'error_msg'</span><span class="token punctuation">:</span> error_msg<span class="token punctuation">,</span>
                                           <span class="token string">'post_list'</span><span class="token punctuation">:</span> post_list<span class="token punctuation">}</span><span class="token punctuation">)</span>

展示结果results.html


{% if error_msg %}
    <p>{{ error_msg }}</p>
{% endif %}

{% for post in post_list %}
<div>
在这里显示文章的相应信息
</div>
{% empty %}
<div class="no-post">
没有搜索到符合条件的文章
</div>
{% endfor %}

映射urls.py

from django.conf.urls import url
urlpatterns = [
    # 其他 url 配置
    url(r'^search/$', views.search, name='search'),
]

详情参考

posted @ 2020-09-01 21:17  开源的Boy  阅读(261)  评论(0)    收藏  举报