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

时间:2021-6-4 作者:qvyue

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 属性
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。