实战django之simple_tag and filter

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

目录

  • 1.创建Django项目
  • 2.创建app(并且app目录下创建一个urls.py文件)
  • 3.Django项目下的settings进行注册该app
  • 4.定义请求的URL路由分发
  • 5.定义app下的URL路由
  • 6.定义URL对应函数处理
  • 7.在app目录下创建templatetags目录,和定义函数处理.py文件
  • 8.html文件进行使用django的simple_tag和自定义的simple_tag,filter
  • 9.启动Django
  • 10.浏览器访问URL结果

1.创建Django项目

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

实战django之simple_tag and filter_第1张图片

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

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

实战django之simple_tag and filter_第2张图片

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

路径:project_burgess/project_burgess/settings

实战django之simple_tag and filter_第3张图片

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 %}{#导入自定义的函数所在的文件#}



    
    Title


-------------后端的模板变量----------------
{{ name }}
-------------Django自带----------------
{{ name|lower }} {#该帮助加工的是django自身提供的功能:对name的内容进行加工变成全部小写#} {{ name|truncatewords:"30" }} {#truncatewords函数 name是实参 "30"也是实参 :取该字符串的前30个字符#}
--------自定义simple_tag-------
{% houyafan 2 5 %} {#simple_tag调取函数格式:houyafan函数 2实参 5实参 空格为实参间隔符#}
--------自定义filter-------
{{ "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调用的方式不能在模板语言里做判断#}

9.启动Django

手动:python manage.py runserver 127.0.0.1:8000

pycharm:

实战django之simple_tag and filter_第4张图片

10.浏览器访问URL结果

实战django之simple_tag and filter_第5张图片

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

 

你可能感兴趣的:(Django,Django之交互实战篇,Django实战篇【总】)