django前端套用现成模板(求助django 实现前端页面检索功能的代码)
本文目录
求助django 实现前端页面检索功能的代码
设我们的 django 博客应用有如下的文章模型:blog/models.pyclass Post(models.Model):# 标题title = models.CharField(max_length=70)# 正文body = models.TextField()# 其他属性def __str__(self):return self.title先看到第 1 步,用户在搜索框输入搜索关键词,因此我们要在博客上为用户提供一个搜索表单,html 表单代码大概像这样:《form method="get" action="/search/"》{% csrf_token %} 《input type="search" placeholder="搜索" required》《button type="submit"》搜索《/button》《/form》特别注意在 form 标签下有一个 {% csrf_token %},这是 django 用来防御跨站请求伪造(CSRF)攻击的机制。如果不知道什么是 CSRF 的话也没有关系,只要记住在使用 django 时,前端的表单代码里一定要加上 {% csrf_token %}。用户输入了搜索关键词并点击了搜索按钮后,数据就被发送给了 django 后台服务器。表单的 action 属性的值为 /search/,表明用户提交的结果将被发送给 /search/ 这个 URL。我们为这个 URL 绑定一个 django 视图函数,在这个视图函数里完成前面第 2 步提到的过程。假设我们把视图函数的代码写在 blog/views.py 里:blog/views.pydef search(request):q = request.GET.get(’q’)error_msg = ’’if not q:error_msg = ’请输入关键词’return render(request, ’blog/errors.html’, {’error_msg’: error_msg})post_list = Post.objects.filter(title__icontains=q)return render(request, ’blog/results.html’, {’error_msg’: error_msg,’post_list’: post_list})首先我们使用 request.GET.get(’q’) 获取到用户提交的搜索关键词。用户通过表单提交的数据 django 为我们保存在 request.GET 里,这是一个类似于 Python 字典的对象,所以我们使用 get 方法从字典里取出键 q 对应的值,即用户的搜索关键词。这里字典的键之所以叫 q 是因为我们的表单中搜索框 input 的 name 属性的值是 q,如果修改了 name 属性的值,那么这个键的名称也要相应修改。接下来我们做了一个小小的校验,如果用户没有输入搜索关键词而提交了表单,我们就无需执行查询,而是渲染一个错误页面提示用户请输入关键词。如果用户输入了搜索关键词,我们就通过 filter 方法从数据库里过滤出符合条件的所有文章。这里的过滤条件是 title__icontains=q,即 title 中包含(contains)关键字 q,前缀 i 表示不区分大小写。这里 icontains 是查询表达式(Field lookups),其用法是在模型需要筛选的属性后面跟上两个下划线。django 内置了很多查询表达式,建议过一遍 django 官方留个印象,了解每个表达式的作用,以后碰到相关的需求就可以快速定位到文档查询其用途:Field lookups接下来就是渲染搜索结果页面,显示符合搜索条件的文章列表,下面是一个模板的简单示例:results.html{% if error_msg %} 《p》{{ error_msg }}《/p》{% endif %}{% for post in post_list %} 《div》在这里显示文章的相应信息 《/div》{% empty %} 《div class="no-post"》没有搜索到符合条件的文章 《/div》{% endfor %}有了视图函数后记得把视图函数映射到相应了 URL,前面我们表单数据提交的 URL 为 /search/,因此将视图函数 search 绑定到该 URL 上。blog/urls.pyurlpatterns = 大功告成!
django导入子模板,怎么给子模板数据
操作方法如下:定义一个母模板base.html,实现子模板继承母模板的样式,并且在继承的基础上可以重写自己页面的新内容。
python django 做了个web ,在登录界面我想直接调用系统的login模板,可是每次登录成功之后就跳到
系统的login.html里包含一个重定向URL的next隐藏域。有这么一行:《input type="hidden" name="next" value="{{ next }}" /》登陆以后跳转到系统默认的/accounts/profile你把value改成你想要跳转的url或者给next重新传一个url也行
更多文章:
margin属性是什么意思(Margin,Border,Padding属性的区别和联系)
2023年11月22日 07:41
microbit编程(想让孩子学习编程,可以在家自学吗有哪些需要注意的问题)
2023年8月7日 19:40
index什么意思翻译中文(Index 的翻译是:是什么意思)
2024年9月27日 05:40
asp教程 下载(哪有好的C#和asp.net视频教程下载)
2024年7月22日 07:05
c语言炫彩圣诞树代码(C语言:用for循环嵌套怎么输出这种圣诞树)
2024年7月24日 13:29
手机平面设计制图软件(手机平面画图软件哪个好,平面设计画图app排行榜)
2024年8月26日 16:20
apache 虚拟主机(什么是虚拟主机,apache 虚拟主机)
2024年7月9日 01:42
hamburger是什么意思中文(hamburger翻译成中文)
2024年7月15日 05:11
《西游记》狮驼岭三个怪物分别欺骗了悟空什么内容悟空相信与否(用原文回答)以及当时悟空的性格?《西游记》狮驼岭原著怎么描述的
2024年7月23日 19:16
进程是一段程序的执行过程(一个进程就是一个程序吗只能有一个cpu运行吗)
2024年9月6日 01:25
truncate记录日志吗(SQL Server中truncate,delete和drop的异同点)
2024年7月5日 20:25
如何用css显示一个图片中多个小图标?怎样用CSS给网站title加小图标
2024年6月29日 13:55