Django学习第二周

简介: 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>
相关文章
|
存储 缓存 数据库
Django框架学习(四)
Django框架学习(四)
|
前端开发 关系型数据库 MySQL
Django框架学习(三)
Django框架学习(三)
|
JSON 前端开发 数据库
Django框架学习(一)
Django框架学习(一)
|
3月前
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
223 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
7月前
|
编解码 前端开发 JavaScript
技术经验分享:Django学习日记
技术经验分享:Django学习日记
|
3月前
|
SQL Java 数据库
Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。
这篇文章是关于如何使用Django框架的ORM系统在视图(views)层面进行数据库的增、删、改、查操作的教程。
37 0
Django学习三:views业务层中通过models对实体对象进行的增、删、改、查操作。
|
3月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
129 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
【Django学习】(十六)session_token认证过程与区别_响应定制
【Django学习】(十六)session_token认证过程与区别_响应定制
|
8月前
|
Python
Django 学习教程-介绍与安装
本章介绍了Django是什么,以及为什么使用Django和安装Django
79 1
Django 学习教程-介绍与安装
|
8月前
|
调度 Apache 数据库
Django 学习教程-第一个 Django 应用
本章主要讲述了如何创建一个Django项目,以一个投票案例程序介绍了Django的请求和响应流程。
99 1