2018-09-04-Python全栈开发day50-django视图与模板

1.视图函数的介绍

  HTTPREQUEST

  request.path==得到客户端的路径

  resquest.get_full_path()===得到带数据的路径

  HTTPRESPONSE

  可以直接向客户端返回数据

from django.shortcuts import render,HttpResponse

# Create your views here.
def index(request):
    return HttpResponse('hello world')

 

  locals

  对于django而言,再tamplates中的html文件都是模板文件,需要经过django语句渲染之后才能正常输出为html文件。

  当html文件中有{{}}等特殊语句时,可以调用函数中的参数进行渲染

  

<div>{{ time1 }}</div>

def index(request):
    time1=time.ctime()
    return render(request,'index.html',locals())
使用locals可以返回函数内所有已有的函数,
def index(request):
    time1=time.ctime()
    return render(request,'index.html',{'time1':time1})

也可以直接使用键值对形式的进行渲染

  redirct

  当某个条件成立时,跳转页面

  if user== 'yuan':

    return redirct(path)

2.django模板之变量

  django可以对模板进行操作,引入函数中的参数进行渲染,然后生成html文件发给前端,

  组成:html代码+逻辑控制代码

  逻辑控制代码

  变量

{{var name}}用双大括号来引用变量,然后在函数中传入变量数值进去,传给前端的时候直接显示出来了

  template和context对象

  template和context都是类,通过将context渲染到template中,可以通过django中的shell交互命令进行测试

  

t=Template('<h1>hello{{name}}</h1>')
c=context({'name':world})
t.render(c)


通过模板对象使用render方法,引入context实例作为参数,来生成真正的html文件

  句点索引

  

<div>{{ s.1 }}</div>
可以获得s的第一个值
dict.key====直接打印字典的值
类:
c=Anmimal('alex',18)
直接打印实例没有意义,可以通过句点打印类的属性
   C.AGE等

  过滤器

  

<div>{{ age|add:5 }}</div>
#给指定的参数加上特定数值

<div>{{ name|capfirst }}</div>
#首字母大写


<div>{{ t|default:'kong' }}</div>
如果这个值为空则自定义显示xxx


<div>
    {% autoescape off %}
        {{ a }}
    {% endautoescape %}
</div>

关闭安全机制

  if和for循环

  标签tag的使用

  

<div>
    {% if age > 1 %}
        {{ name }}

    {% endif %}
</div>
注意if条件语句中要注意空格
<div>
    {% if age > 10 %}
        {{ name }}
    {% elif name == 'alex' %}
        {age}
    {% endif %}
</div>

带有if/elif

  for循环

  

{% for i in s %}
    {{ i }}
    {% endfor %}
和python类似

 {% for i in s %}
    {{ forloop.counter }}
    {% endfor %}


对元素加上索引,以1开头

{% for i in s %}
    {{ forloop.counter }}:{{ i }}
    {% endfor %}

元素加上索引
还有forloop.reverse==倒着排

{% for i in s %}
    {{ forloop.first }}
    {% endfor %}


forloop。first。。
如果某个元素是第一次循环,则返回true

  empty

  

<div>
    {% for i in t %}

        {% empty%}
        {{ age }}
    {% endfor %}
</div>

如果循环体是空的,则返回某段函数

  with

   可以使用简单的变量名取代长的变量名

<div>
    {% with total=name %}
    {{ total }}
    {% endwith %}
</div>

  verbaim禁用渲染

  如果只是简单的想表达某字段,则可以禁用渲染

  

{% verbatim %}
        {{ name }}
     {% endverbatim %}

 

posted @ 2018-09-04 23:10  brownbearye  阅读(154)  评论(0)    收藏  举报