实战django之simple_tag and filter

本文详细介绍了如何在Django中创建项目、注册app、设置URL路由,并重点讲解了在app目录下创建templatetags目录,定义自定义的simple_tag和filter,以及在HTML中如何使用它们。通过一步步的实践操作,展示了Django前后端交互的过程。
摘要由CSDN通过智能技术生成

目录篇:Django之前后端交互篇目录 点击跳转
主篇:Django之模板HTML相关【交互篇三】点击跳转

目录


1.创建Django项目

Django之创建项目【二】:https://blog.csdn.net/Burgess_zheng/article/details/86505526

2.创建app(并且app目录下创建一个urls.py文件)

进入项目目录下
创建app命令:
   F:\Burgess\Python\pycharm实验脚本\test\project_burgess>python manage.py startapp submit_views

3.Django项目下的settings进行注册该app

路径:project_burgess/project_burgess/settings

4.定义请求的URL路由分发

路径:project_burgess/project_burgess/urls.py

from django.contrib import admin
from django.urls import path,re_path #Django版本2.0以上
from project_burgess import views
from django.conf.urls import url  #Django2.0
from django.conf.urls import include

urlpatterns = [
    path('admin/', admin.site.urls),
   
    #提交各种数据数据类型测试
    re_path('submit/', include("submit_views.urls")),
    # url(r'^submit/', include("submit_views.urls")),

]

5.定义app下的URL路由

路径:project_burgess/submit_views/urls.py

__author__ = "Burgess Zheng"
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from django.urls import path,re_path #Django版本2.0以上
from submit_views import views
from django.conf.urls import url  #Django2.0

app_name='namespace'
urlpatterns = [
    # simple_tag_and_filter
    re_path('stf/', views.stf),
    # url(r'^stf/',views.stf),

]

6.定义URL对应函数处理

路径:project_burgess/submit_views/views.py

def stf(request):
    name = "BURGESSzheng886edfs"
    return render(request,'stf.html',{'name':name})

7.在app目录下创建templatetags目录,和定义函数处理.py文件

注意该目录名字必须为templatetags,所在的app必须在django的settings进行注册

路径:project_burgess/submit_views/templatetags/xxoo.py

__author__ = "Burgess Zheng"
from django import template
from django.utils.safestring import mark_safe

register = template.Library()
#实例化一个对象,对象的名字必须是register,不能为其他

#调用该对象继承类的simple_tag方法装饰下面函数
@register.simple_tag
def houyafan(a1,a2):
    return a1+a2

#调用该对象继承类的filter方法装饰下面函数
@register.filter
def jiajingze(a1,a2):
    return a1+a2
# 注意:对于filter,前端模板最多就只能传两个函数
# 前端模板想传3个参数,那么必须把需要的多个参数以一个参数的形式出现,
# 那么函数内部自己去分开进行处理
#我们要用上面的吗?看场景,如果前端模板要做判断,这能用这种,simple_tag不能做判断

#调用该对象继承类的filter方法装饰下面函数
@register.filter
def mengduo(a1,a2):#职能接收2个参数,如果前端有多个参数,函数内部在做切割处理
    print(a2)
    return a1+a2


#调用该对象继承类的filter方法装饰下面函数
@register.filter
def int01(a1,a2):
    print(a2,type(a2))
    return a1+str(a2)

8.html文件进行使用django的simple_tag和自定义的simple_tag,filter

路径:project_burgess/templates/stf.html

{% load xxoo %}{#导入自定义的函数所在的文件#}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>-------------后端的模板变量----------------</div>
    {{ name }}


<div>-------------Django自带----------------</div>
    {{ name|lower }}
{#该帮助加工的是django自身提供的功能:对name的内容进行加工变成全部小写#}
    {{ name|truncatewords:"30" }}
{#truncatewords函数  name是实参  "30"也是实参   :取该字符串的前30个字符#}

<div>--------自定义simple_tag-------</div>
    {% houyafan 2 5 %}
{#simple_tag调取函数格式:houyafan函数  2实参  5实参   空格为实参间隔符#}

<div>--------自定义filter-------</div>
    {{ "maliya"|jiajingze:"LS" }}
{#filter调取函数格式:"maliya"实参  jiajingze:函数 "LS"实参 #}
{#注意:对于filter最多就只能传两个函数#}
{#如果想传3个参数,那么你就必须"LS,YH" 两个参数和在一起变一个参数#}
{#那么函数内部自己去分开进行处理#}

    {{ "mamama"|mengduo:"LS,YH" }}
{#filter格式传3个参数,函数内部还是当做2个参数接收#}

    {{ "shuzi"|int01:5 }}
{#filter格式数字,函数内部接收需要转字符串#}

    {#    {% if "maliya"|jiajinze:"LS" %}      #}
    {#    {% endif %}             #}
{#filter模式调取模式可以在模板语言里面做判断#}
{#simple_tag调用的方式不能在模板语言里做判断#}

</body>
</html>

9.启动Django

手动:python manage.py runserver 127.0.0.1:8000

pycharm:

10.浏览器访问URL结果

目录篇:Django之前后端交互篇目录 点击跳转
主篇:Django之模板HTML相关【交互篇三】点击跳转​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值