当前位置:首页 > Python教程 > python技巧

Python学习第二十八课——Django(templates)

templates 讲后台得到的数据渲染到页面上:话不多说,先看具体代码。

urls:

            
                from django.conf.urls import url
from django.contrib import admin
from django.urls import path

from a00 import views

urlpatterns = [
    path(admin/, admin.site.urls),
    url(rshow_time/,views.show_time ),
    url(rlist_bianli/,views.list_bianli),
    url(rdict_bianli/, views.dict_bianli),
    url(r"login/",views.login,name="log")


]
        

views:

            
                from django.shortcuts import render, HttpResponse
import time, datetime


# Create your views here.class Animal():
    def__init__(self,name,sex):
        self.name=name
        self.sex=sex





def show_time(request):
    t = datetime.datetime.now()
    return render(request, "show_time.html", locals())


def list_bianli(request):
    l = ["韩寒", "梅梅", "丽丽"]

    return render(request, "index.html", {"action":l}) # 遍历列表def dict_bianli(request):
    c=Animal("alex","")

    l = ["韩寒", "梅梅", "丽丽"]
    d = {"name": "憨憨", "age": 12, "hobby": "篮球"}



    a="<a href=‘‘>click</a>"return render(request, "dict_bian.html",locals()) # 遍历字典def login(requrst):
    return HttpResponse("OK")
        

show_time.html:

            
                <!
                DOCTYPE html
                >
                <
                html 
                lang
                ="en"
                >
                <
                head
                >
                <
                meta 
                charset
                ="UTF-8"
                >
                <
                title
                >Title</title></head><body><h1>时间为:{{ t }}</h1>

{#管道符  date方法 主要格式化日期#}
<h1>{{t|date:"Y-m-d"}}</h1></body></html>
        

 

index.html:

            
                <!
                DOCTYPE html
                >
                <
                html 
                lang
                ="en"
                >
                <
                head
                >
                <
                meta 
                charset
                ="UTF-8"
                >
                <
                title
                >Title</title></head><body><h1>Hellow {{ action.0 }}</h1><h1>Hellow {{ action.1 }}</h1><h1>Hellow {{ action.2 }}</h1><h1>{{ a }}</h1></body></html>
        

dict_bian.html:

            
                {#在HTML中加在你的filter#}
{% load myTag %}

                <!
                DOCTYPE html
                >
                <
                html 
                lang
                ="en"
                >
                <
                head
                >
                <
                meta 
                charset
                ="UTF-8"
                >
                <
                title
                >Title</title></head><body>
{#万能聚点符  可以遍历字典,列表  等等#}
<h1>Hellow {{ d.name }}</h1>  <!-- 憨憨--><h1>Hellow {{ d.age }}</h1><h1>Hellow {{ d.hobby }}</h1><h1>hello {{c.name}}</h1><h1>hello {{c.sex}}</h1><h1>憨的真是年龄{{d.age|add:12 }}</h1><!--憨的真是年龄24-->



{#第一种写法#}
<h1>{{ a|safe}}</h1><!--相当于超链接-->


{#第二种写法#}
{% autoescape off %}
    <h1>{{ a }}</h1>
{% endautoescape %}

{#if语句#}
{#输出结果:憨憨的年龄小于12#}
{% if d.age > 18 %}
    <h1>hello {{ d.name }}</h1>
{% else %}
    <h1>{{ d.name }}的年龄小于{{ d.age }}</h1>
{% endif %}


{#for循环#}
{#输出结果:1:韩寒 2:梅梅  3:丽丽 #}

{% for name in l %}

    <h1>{{ forloop.counter0 }}:{{ name }}</h1>

      倒序输出
    <h1>{{ forloop.revcounter0 }}:{{ name }}</h1>

{% endfor %}


<form action="{% url ‘log‘ %}" method="post"><p>用户名<input type="text" name="user"></p><p>密码<input type="text" name="pwd"></p><p><input type="submit"></p>
{#    渲染“身份证”  解决403#}
    {% csrf_token %}

</form>


{#通过自定义过滤器来完成乘法运算#}
{{ d.age|filter_multi:3 }}  <!-- 输出结果 36  此时d.age 相当于后台 filter_multi 方法中的x ,3 才是参数y-->

{% simple_tag_multi 3 5 2 %} <!-- 30 -->

{% simple_tag_multi d.age 5 2 %} <!-- 120 --></body></html>
        

自定义过滤器filter:

第一步:在项目中创建一个文件夹名字叫templatetags.

技术分享图片

 

 

 

第二步:在文件夹templatetags建一个.py文件,名字自定

技术分享图片

 

 

第三步:在.py文件中写代码:

myTag.py:

            
                from django import template  # 固定 背下来from django.utils.safestring import mark_safe  # 固定 背下来
register = template.Library()  # register 的名字是固定的,不可改变

@register.filter
def filter_multi(x, y):  # y是参数 x不是 并且只能有一个参数return x * y


@register.simple_tag
def simple_tag_multi(x, y, z):  # 可以传多个参数return x * y * z
        

接着在需要用到自定义过滤器filter的HTML中运用即可:

技术分享图片

 

 注:复制的话去前面dict_bian.html中

 

原文:https://www.cnblogs.com/pyhan/p/12374190.html


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!