Django学习第二周

views.py文件

from django.shortcuts import render, HttpResponse

# Create your views here.

from django.views import View

class Mylgoin(View):
    def get(self, request):
        return render(request, 'login.html')
    def post(self, request):
        return  HttpResponse('post请求')


def index(request):
    # 模板语法可以传递的后端python数据类型
    n = 123
    f = 12.2
    s = '字符串'
    l = ['小红', '姗姗', '花花']
    b = False
    t = (111,222,333)
    d = {'username':'liu', 'age':18, 'info':'这个人有点意思','hoby':[123,222,333,{'info':"djknd"}]}
    se = {'静静', '洋洋'}
    # return render(request,'index.html', {})
    lll = []
    def func():
        return '我是一个函数'


    class MyClass(object):
        def get_self(self):
            return 'self'
        @staticmethod
        def get_func():
            return 'func'
        @classmethod
        def get_class(cls):
            return 'cls'

        # 对象被展示到html页面上,就类似于执行了打印操作,也就会会触法__str__方法

        def __str__(self):
            return '触法__str__方法'
    obj = MyClass()
    # django模板语法的取值,是固定格式,只能采用“句点符”
    # 既可以点键也可以点索引,还可以两者混用

    file_size = 123123123
    import datetime
    current_time = datetime.datetime.now()
    info = 'jjddddddddddddddddd'
    egl = 'my name is jason my age is 18'
    msg = 'I am from China'
    hhh = '<h1>敏敏<h1>'
    return render(request,'index.html', locals())



mytag.py

from django import template

register = template.Library()

# 定义过滤器
@register.filter(name='baby')
def my_sum(v1,v2):
    return v1+v2



# 自定义标签
@register.simple_tag(name='plus')
def index(a,b,c,d):
    return '%s-%s-%s-%s'%(a,b,c,d)


@register.inclusion_tag('left.html')
def left(n):
    data = ['第{}项'.format(i) for i in range(n)]
    # return {'data':data}
    return locals()  # 将data传递给html页面












index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{#    <p>{{ n }}</p>#}
{#    <p>{{ f }}</p>#}
{#    <p>{{ s }}</p>#}
{#    <p>{{ b }}</p>#}
{#    <p>{{ l }}</p>#}
{#    <p>{{ t }}</p>#}
{#    <p>{{ d }}</p>#}
{#    <p>{{ se }}</p>#}
{#    <p> 传递函数名会自动加括号调用,但是模板语法不支持给函数传额外手的参数:{{ func }}</p>#}
{##}
{#    <p>传类名的时候会自动加括号调用(实例化) {{ MyClass }}</p>#}
{#    <p> 内部能够自动判断当前变量名是否可以添加括号使用,如果可以就会自动执行  针对的是函数名和类名</p>#}
{#    <p>{{ obj }}</p>#}
{#    <p>{{ obj.get_class }}</p>#}
{#    <p>{{ obj.get_func }}</p>#}
{#    <p>{{ obj.get_self }}</p>#}
{#    <p>类中方法的调用</p>#}
{#    <br>#}
{#    <br>#}
{#<p>{{ d.hoby.3.info }}</p>#}
{##}
{##}
{#  <p>过滤器就类似于是模板语法的内置方法 <br>#}
{#      django内置60多个的过滤器  了解10左右#}
{#      基本语法#}
{#        {{ 数据|过滤器:参数 }}#}
{##}
{#  </p>#}
{#    <h1>过滤器</h1>#}
{#    <p>统计长度:{{ s|length }}</p>#}
{#    <p>默认值:( 第一个参数布尔值是True就是展示第一个参数的值,否则就展示冒号后面的值 ){{ b|default:'ss'}}</p>#}
{#    <p>文件大小:{{ file_size|filesizeformat }}</p>#}
{#    <p>日期格式化:{{ current_time|date:'Y-m-d H:i:s' }}</p>#}
{#    <p>切片操作(支持步长):{{ l|slice: '0,4,2' }}</p>#}
{#    <p>切取字符(包含三个点){{ info|truncatechars:9 }}</p>#}
{#    <p>提取单词(不包含三个点 按照空格切){{ egl|truncatewords:9 }}</p>#}
{#    <p>移出特定的字符:{{ msg|cut:' ' }}</p>#}
{#    <p>拼接操作:{{ l|join:"$" }}</p>#}
{#    <p>拼接操作(加法):{{ n|add:10 }}</p>#}
{#    <p>拼接操作(加法):{{ s|add:msg }}</p>#}
{#    <p>取消转义:{{ hhh }}</p>#}
{#    <p>取消转义:{{ hhh|safe }}</p>#}

{#<h1>标签</h1>#}
{#{% for foo in l %}#}
{#    <p>{{ forloop }}</p>#}
{#    <p>{{ foo }}</p>#}
{#{% endfor %}#}
{##}
{#{% if b %}#}
{#    <P>bady</P>#}
{#{% elif s%}#}
{#    <p>都来</p>#}
{#{% else %}#}
{#    <p>else</p>#}
{#{% endif %}#}
{#    <p>--------------------------------------------------------------</p>#}
{#    <p></p>#}
{##}
{##}
{#自定义标签,过滤器,inclusion_tag#}
{# 三步走#}
{#    1.在应用下创建一个名字为templatetags文件夹#}
{#    2、在文件夹内创建“任意”名称的py文件#}
{#    3、在该py文件中必须先书写一下两句话 (单词一个都不能错)#}
{#        from django import template#}
{##}
{#        register = template.Library()#}

<h1>自定义的使用</h1>
{% load mytag %}
<p>{{ n|baby:666 }}</p>
<p>多个参数直接用空格隔开</p>
<p>{% plus 'jason' 123 266 99 %}</p>

自定义inclusion_tag
内部原理
    先定义一个方法
    在页面上调用该方法,并且可以传值
    该方法会自动生成一些数据然后传递给一个html页面
    之后将渲染好的结果放到调用的位置

总结:
    当html页面某一个地方的页面需要传递参数才能够动态渲染,并且在多个页面上都需要使用
    到该局部,那么就考虑将该局部页面做成inclusion_tag形式

{% left 10 %}

</body>
</html>









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼干儿♛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值