当前位置: 首页 > 网络应用技术

如何渲染Django的模板页面(Django的默认模板引擎)

时间:2023-03-05 19:05:10 网络应用技术

  指南:本文的首席执行官注释将介绍Django如何呈现模板页面的相关内容。我希望这对每个人都会有所帮助。让我们来看看。

  让我们的Django博客应用程序具有以下文章模型:

  Blog/models.pyclass帖子(Models.Model):

  # 标题

  title = models.charfield(max_length = 70)

  #正正

  body = model.textfield()

  #其他属性

  def __str __(self):

  返回self.title

  首先,请参见步骤1,用户在搜索框中输入搜索关键字,因此我们需要为博客上的用户提供搜索表格。HTML表单代码可能是这样的:

  形式方法=“ get” action =“/search/”

  {%csrf_token%}输入类型=“搜索”占位符=“搜索”需要

  按钮类型=“提交”搜索/按钮/表单

  特别是,在表单标签下有一个{%csrf_token%}。这是Django捍卫Cross -Site请求伪造(CSRF)攻击的一种机制。如果您不知道CSRF是什么,这没关系。请记住,使用Django时,您必须将{%csrf_token%}添加到前端表单代码。

  用户输入搜索关键字并单击搜索按钮后,将数据发送到Django背景服务器。表单的操作属性的值为 /搜索 /,表明用户提交的结果将发送到/search /this URL.我们绑定此URL的DJANGO视图函数,并在此视图函数中完成上一步2中提到的过程。支持我们在blog /views.py中编写视图函数的代码:

  blog/views.pydef搜索(请求):

  q = request.get.get('q')

  error_msg =''

  如果不是Q:

  error_msg ='请输入关键字'

  返回渲染(请求,'blog/errors.html',{'error_msg':error_msg})

  post_list = post.objects.filter(title__icontains = q)

  返回渲染(请求,'blog/results.html',{'error_msg':error_msg,

  'post_list':post_list})

  首先,我们使用request.get.get('q')获取用户提交的搜索关键字。用户通过表格Django提交的django存储在request.get中。这是一个类似于Python字典的对象,因此我们使用GET方法从字典中删除键Q的值,即用户的搜索关键字。此处的字典键称为,因为该字典的键是因为我们表格中输入框的名称属性为Q。如果修改了名称属性的值,则必须对此键的名称进行相应修改。

  接下来,我们进行了少量验证。如果用户在不输入搜索关键字的情况下提交表单,则我们不需要执行查询,而是渲染错误的页面来指示用户应输入关键字。

  如果用户输入搜索关键字,我们将通过过滤器方法从数据库中滤除所有合格的文章。此处的过滤条件是title__icontains = q,即关键字q包含(包含)关键字q,而前缀i表示,它没有区分情况。iContains是一个字段查找,用于与需要筛选的模型背后的两个下属线保持一致。Django有很多查询表达式。建议留下官方印象,以了解每个表达的角色。将来,您可以快速定位文档以查询文档的目的:现场查找

  下一步是渲染搜索结果页面,显示符合搜索条件的文章列表。以下是模板的简单示例:

  results.html

  {%如果error_msg%} p {{error_msg}/p {%endif%}

  {post_list%} div中的帖子

  在此处显示文章的相应信息 /div {%空%} div class =“ no-pos”

  没有合格的文章 /div {%endfor%}

  视图函数后,请记住将视图函数映射到相应的URL。通过我们的表单数据提交的URL为 /搜索 /,因此视图功能搜索被键入URL。

  blog/urls.pyurlpatterns = [

  #其他URL配置

  url(r'^search/$',views.search,name ='search'),]],]]

  更大的功绩!

  用户名出现在TeamCola的每个页面的右上角,但是如果在每个视图方法中使用了常规方法,则如果您通过Render_TO_TO_RESPONSE方法将用户数据注入用户数据,则将执行很多重复的工作,则就像以下内容一样:def views_meth3(请求):return render_to_response('template_3.html',{'user':request.user})#...剩下的n方法。注射,或者您需要通过一些其他计算生成,这是麻烦的。因此,如何避免重复您的2B模式?我们可以选择以下模型:每次创建一个新的Django项目时,通常我们都会创建一个工具模块类似于root Directory中的utils.py。渲染方法在每个模板的渲染中注入指定的全局变量:#in utils.py:def mp_render(请求,template,context = {}):context ['user'user] = request.user resto_responseviews_meth3(请求):返回mp_render(请求,'template_3.html')已被充分理解。这样,如果将来全局变量有新的增加,您只需要修改MP_Render方法。嗯,这是一种非常常见的方法。由于这是一种常见的方法,所以让我们有一个文学上的观点。LET查看Django文档中render_to_response方法的定义。在“必需的参数”中,有此方法的第三个参数,称为Context_Instance。此参数的描述如下:渲染测试的上下文实例您需要使用requestContext对象呈现模板。“那么上下文处理器是什么?阅读了本文档的定义后,一切都应该清楚。首先,您需要了解,在Django模板系统中,包装模板变量有两种类型,一个是Django.template。 我们的威利特被这个上下文类封装,然后传递给模板。另一个是django.template.requestcontext,与上下文类相比有两个区别。第一个是区别时,当生成requestContext变量时,您需要将httprequest对象作为第一个参数作为C = requestContext(请求,请求,,,,,,,,{'foo':bar',})第二个区别是,它将添加一些自动自动自动变量,这些变量在哪里注入了模板的变量?settings.py in django In django in django in django in template_context_processors配置。此配置中的TPLE元素实际上是一种可以一个一个称为的方法。这些方法将接收一个httprequest对象作为参数,最后返回字典。本字典中的元素将成为一个变量,可以自动将模板注入requestContext中。Auth方法,包括三个元素,因此,如果使用Render_to_response方法,则传递第三个请求context参数,然后在其渲染的模板中,它可以与相应的用户,消息,perms变量。因此,最后一个文学解决方案是在需要注入全局变量的每个视图方法中,当调用render_to_response时,它将传递到第三个requestContext对象参数:def views_meth1(request):d1 = {'method':1flexibility较高且易于展开。在一般项目开发中,我个人认为普通方法足够了,因此请根据项目选择。

  名称参数可以给出匹配的URL地址。通常用于模板。您也可以使用反向进行页面重定向。

  1.对于应用程序中的书籍中的urls.py(命名为URL)

  2. views.py在应用程序中的书籍中(重定向是重定向方向,反面是将URL的名称解析为URL本身的函数)

  1.名称参数可以给该URL一个合适的名称。通过使用URL的名称,将来在视图或模板中使用此名称,您只需要使用此名称。其原因是防止URL来自更改,这将导致在其他地方使用此URL的位置的更改,但是如果以该名称获取,则不会进行任何更改。

  2.注意:

  1.模板在哪里?

  2.在项目的主要目录中制作模板路径配置;将设置的寺庙目录路径添加到HTML模板的模板目录中。

  注意:反向方法中还可以有夸尔格斯参数。参数直接传递给您要在反面解析后要跳到的URL路径中的捕获参数,以达到传递参数的效果。

  首先,您需要知道如何在视图中渲染模板,这取决于您使用的数据库以及是否使用django orm。

  以MySQL为例。如果您只需要从现有数据库中查询数据,则可以使用MySQLDB模块。查询数据和模板用于渲染,然后在渲染后返回到模板对象。

  呢doctype htmlhtml lang =“ en”头

  meta charset =“ utf-8”

  title5/title/headbody

  {book}}/body/html

  我认为是您使模板写错了。在上面2中。您传递给模板的参数是字典。您只能在django的模板中使用该字典的“键”。使用mailcon.lettercon,从模板转换为python是tettercon.lettercon。这是错误的。您应该写{{mailcon |安全}}直接在模板中。

  结论:以上是django如何渲染模板页面的全部内容。我希望这对每个人都会有所帮助。如果您想了解更多有关此信息的信息,请记住收集并关注此网站。