Django 渲染模板、路径配置、变量使用。

DTL与普通的HTML文件的区别:

DTL模板是一种带有特殊语法的HTML文件,这个HTML文件可以被Django编译,可以传递参数进
去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端。

渲染模板

  • 先在templates文件夹下创建html文件。
  • render_to_string:找到模板,然后将模板编译后渲染成Python的字符串格式。最后在通过HttpResponse类包装成一个HttpResponse对象返回回去。
      在views.py文件中编写
    
      from django.template.loader import render_to_string
    
      from django.http import HttpResponse
    
      def index(request):
    
          html = render_to_string("detail.html")
    
          return HttpResponse(html)
    
      最后在urls.py文件中,将路径写入即可
  • 以上方式虽然已经很方便了。但是django还提供了一个更加简便的方式,直接将模板渲染成字符串和包装成 HttpResponse 对象一步到位完成。
      在views.py文件中编写
    
      from django.shortcuts import render
    
      der index(request):
    
          return render(request,'detail.html')

模板查找路径配置

模板查找路径配置:在项目的 settings.py文件中。有一个TEMPLATES 配置,这个配置包含了模板引擎的配置,模板查找路径的配置,模板上下文的配置等。模板路径可以在这个地方配置。

  • DIRS:这是一个列表,在这个列表中可以存放所有的模板路径,以后在视图中使用 render或者render_ to _ string渲染模板的时候,会在这个列表的路径中查找模板。

      'DIRS':[os.path.join(BASE_DIR, 'templates')]
  • APP_DIRS:默认为True,这个设置为 True 后,会在"INSTALLED _ APPS"的安装了的 APP下的 templates文件加中查找模板。
      'APP_DIRS': True,
  • DIRS优先级高于APP_DIRS

模板变量的使用

模板中可以包含变量, Django在渲染模板的时候,可以传递变量对应的值过去进行替换。变量的命名规范和Python非常类似,只能是阿拉伯数字和英文字符以及下划线的组合,不能出现标点符号等特殊字符。变量需要通过视图函数渲染,视图函数在使用render或者render_to_string的时候可以传递一个context 的参数,这个参数是一个字典类型。以后在模板中的变量就从这个字典中读取值的。

  • views.py代码示例

      def profile(request):
          return render(request,'profile.html',context={'username':'张三 '})
  • profile.html模板代码示例
      <p>{{username}}</p>

模板中的变量同样也支持 点(.)的形式。在出现了点的情况,比如 person.username,模板是按照以下方式进行解析的:

  • views.py示例

      class Person(object):
          def__init__(self,username):
              self.username = username
    
      def profile(request):
          p = Person('jiajia') #创建一个对象
          context = {
              'person':p
          }
          return render(request,'profile.html,context=context)
  • html代码示例
      <html>
      ...
      <body>
          {{person.username}} #根据Key来获取
      </body>
      </html>

传递的一个参数是一个模型或者是一个类。获取属性的话。可以通过点的方式

如果person是一个字典呢?

  • views.py示例

      class Person(object):
          def__init__(self,username):
              self.username = username
    
      def profile(request):
          context = {
              'person':{
                  'username':'jiajia'   #person对应的是一个字典
              }
          }
          return render(request,'profile.html,context=context)
  • html代码示例
          {{person.username}}

注意

如果views.py文件是这样的。

        context = {
            'person':{
                'username':'jiajia'   #person对应的是一个字典
                'keys':'abc'
            }
        }

html文件是这样的呢?

        {{person.keys}} 

返回的是abc,即对应的值。这样是会产生歧义的。为了避免产生歧义,应该避免在这个字典内写他本身的一些属性来作为这个键的值!

另外的形式

  • views.py示例

          context = {
              'person':[
                  'a',   #这里是一个中括号
                  'b',
                  'c'
              ]
          }

如何获取列表属性的第一个值a呢?

  • html代码示例

          {{person.0}}   #通过点(.)索引获取

同理,元组也是这样。

原文地址:https://www.cnblogs.com/jiajiaba/p/10548866.html

时间: 2024-11-01 08:50:44

Django 渲染模板、路径配置、变量使用。的相关文章

django渲染模板时跟vue使用的{{ }}冲突解决方法

var vm = new Vue({ el: '#app', // 分割符: 修改vue中显示数据的语法, 防止与django冲突 delimiters: ['[[', ']]'], data: { ... } 通过delimiters声明,将Vue的模板变量变为了[[  ]] 原文地址:https://www.cnblogs.com/chichung/p/10010520.html

Django的模板系统

模板系统介绍 模板系统的组成:HTML代码和逻辑控制代码 逻辑控制代码可以理解是django模板语言 django的模板语言组成 变量(使用双大括号来引用变量): 标签(tag)的使用(使用大括号和百分比的组合来表示使用tag) 模板继承 模板语言之变量 语法: {{var_name}} var_name 指变量名 使用模板语言之前: 先介绍template对象和Context对象 进入django的项目的交互环境 python manange.py shell >>> from dja

Django——模板路径 模板变量 常用过滤器 静态文件的使用

Django 模板路径 模板变量 过滤器 静态文件的加载 模板的路径,有两种方法来使用 设置一个总的templates在大项目外面,然后在sittings的TEMPLATES中声明 在每一个APP中创建templates,然后在settings的INSTALLED_APPS中声明 模板变量的使用 语法:   {{ 变量名 }} 命名由字母和数字以及下划线组成,不能有空格和标点符号 可以使用字典.模型.方法.函数.列表 不要和python或django关键字重名 变量和查找 注:1.如果data是

django中url路由配置及渲染方式

今天我们学习如何配置url.如何传参.如何命名.以及渲染的方式,内容大致有以下几个方面. 创建视图函数并访问 创建app django中url规则 捕获参数 路径转换器 正则表达式 额外参数 渲染方式 创建视图并访问 项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py. 然后在views.py中,导入头文件  from django.http import HttpResponse 然后我们在views.py中,写一些Python函数,用来

Django中的URL配置和模板

Django中的URL配置 : 实例: Python代码   urlpatterns = patterns('', # Example: # (r'^myweb/', include('myweb.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc

django中静态文件路径配置

#环境:ubuntu12.04+python27+django1.4.2+[ngix]+fastcgi; #如果经过ngix服务器的话无疑可以在任意位置放置,只要在ngix中配置相关的路径文件,但很多时候在调试时我们不想经过ngix服务器,那就需要对django进行静态文件的路径配置. #首先我想把我的静态文件放在项目的根目录下,创建一个static的文件夹,为了便于显示效果,我在static下放置了一个sa.txt文件,里面随意写一些内容! #文件目录如图所示: #打开settings.py文

django复习--如何设置模板路径

设置模板路径:在settings.py中找到templates,添加红色部分,表示设置路径到与setting.py上级目录同级的"templates"文件夹下 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context

log4j 路径环境变量配置和log4j加载配置

1.lo4j日志路径从环境变量读取,log4j.xml配置如下: 具体配置如下: log4j.appender.R.Encoding=UTF-8 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.Append=true #log4j.appender.R.Threshold=INFO log4j.appender.R.File=${log4j.home}/logs/log.log log4j.a

django 模板中通过变量替代key取字典内容

模板中通过变量替代key取字典内容 templatetags/├── get_item.py├── __init__.py ###get_item.py # coding=utf-8 from django import templatefrom django.utils.safestring import mark_safefrom django.template.base import resolve_variable, Node, TemplateSyntaxError register