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 %}
                    
                
                
            
        
浙公网安备 33010602011771号