Django 学习笔记-14 搜索功能 实现一个简单的搜索功能、method 属性 和 action 属性

1. 使用 Django 的 FiltersQ 对象实现一个简单的搜索功能

下面是一个用 Django 的 FiltersQ 对象实现的简单的搜索功能:

template 文件:

q

views.py 文件:

def search_results_view(request):
    query = request.GET.get('q')
    blog_list = Blog.objects.filter(
            Q(title__icontains=query) |
            Q(intro__icontains=query)
        )
    

可以看到,

标签有一个 method 属性值是 get,它是用来指定搜索时的请求类型的。而 action 属性是用来指定表单中的数据应该发到哪一个 url 标签内部的 标签是用来让用户输入搜索关键词的。

2.1 method 属性:GET 和 POST

提交表单数据时只会用到 GET 和 POST 两种 HTTP 请求方法。

2.1.1 GET

  • GET 方法提交的数据会被附加到 URL 中,请求结束后,可以看到在 URL 后有一个问号 ?,在问号后面还有以 & 符号分隔的键值对。
  • GET 应该只被用于获取数据。
  • GET 方法不适用于提交密码的表单,因为这样的话密码会编码到发起请求的 URL 中,存在泄露密码的风险。
  • GET 方法也不适用于处理大量的数据和二进制数据,因为 GET 可提交的数据量受到 URL 长度的限制,虽然 HTTP 协议规范没有对 URL 长度进行限制,但是不同的浏览器和服务器都对它有所限制。
  • GET 请求存在的安全隐患:攻击者很容易通过模拟请求来访问系统的敏感数据。

2.1.2 POST

  • 任何更改数据库状态的请求都应使用POST, 比如创建,编辑或删除数据。

2.2 action 属性

这个属性指定了表单中的数据所要发往的 URL,它的值必须是一个有效的 URL。如果没有提供此属性,那么数据将被发送到这个表单所在页面的 URL。

你可能感兴趣的:(Django 学习笔记-14 搜索功能 实现一个简单的搜索功能、method 属性 和 action 属性)