Django框架- 自定义过滤器的使用以及一些小知识_

Django中过滤器的使用跟其它框架不一样,它比较严谨,所以有好多的地方 都是不相同的

1、定义自定义的过滤器
建立一个跟__pycache__文件同级的文件夹 命名为templatetags, 然后在templatetags中定义过滤器,

#导包
#导入模板模块
from django import template
#注册过滤器对象
register = template.Library()
#定义自定义过滤器
#在django内部,通过装饰器的方式来自定义过滤器
@register.filter
def my_str(val):
    return '$' + str(val)

然后就可以在路由里面输出

{# 使用自定义过滤器时导入过滤器文件,默认读取内层的mysite #}
{% load d3_my_filter %}
{{ test_str | my_str }}

2、定义一个双参数的过滤器

#定义一个双参数过滤器
@register.filter
def my_str_two(val,p1):
    return val + p1

然后在模板里输出

 {# 两个过滤器参数进行调用 :后面的就是第二个参数 #}
{{ '你好' | my_str_two:'不好?' }}

3、定义一个多参数的过滤器

#定义一个多参数的过滤器
#注册过滤器的时候,需要注册simple_tag
@register.simple_tag
def my_str_many(val,p1,p2): 
    return val + p1 + p2 

然后在模板里输出,这儿需要注意,跟上面的两个不一样,参数 _‘你好’ ‘不好’ ‘啊’ _ 是自己传的,不像上面的一样是调用的!!!

{#  调用多参数的过滤器,可以使用 % 来调用 #}
{% my_str_many '你好' '不好' '啊' %}

4、定义一个取余的过滤器

#定义一个取余数的过滤器
@register.filter
def get_line(val):
    return int(val) % 2

在模板里输出

{# for 和 if 嵌套 #}
    
    {% for item in test_list %}
        {% if forloop.counter|get_line == 0 %}
        
        {% else %}
        
        {% endif %}    
            
    {% endfor %}
    
{{item}}

5、当使用html标签时 使用内置过滤器safe转义

{{ test_b|safe }}

6、也可以通过python语言写前端的页面

#定义视图方法
def index(request):
    test_str = '你好这里是首页'
    test_list = [1,2,3,4]
    test_int = 100
    test_b = '你好'

#使用后台来编写table
#定义好表格起始标签
my_table = ""
#在循环内填充表格
for item in test_list:
    #定义好一个类选择器
    my_class = ""
    #判断奇数还是偶数
    if item % 2 == 0:
        my_class = "tr2"
    else:
        my_class = "tr1"
    #将判断后的类选择器填入字符串
    my_table += "" % (my_class,str(item))
#补全标签
my_table += "
%s
"

然后在模板里直接调用,

{# 输出后台table #}
{{ my_table|safe }}

注意这里也需要safe转义前端页面的tr td…标签不然就会显示如下
在这里插入图片描述

7、 使用locals()方法可以将视图方法内所有的变量默认传参,建立常使用

return render(request,'d3_index.html',locals())

8、Django 的session 需要设置连接mysql数据库

修改配置文件settions.py

'default': {
          'ENGINE': 'django.db.backends.mysql', #数据库引擎
          'NAME': 'mydjango',                       #数据库名
          'USER': 'root',                       #用户名
          'PASSWORD': '123456',                   #密码
          'HOST': '',                           #数据库主机,默认为localhost
          'PORT': '',                           #数据库端口,MySQL默认为3306
          'OPTIONS': {
             'autocommit': True,
         }
    }

修改 __init__.py 文件

#导包
import pymysql
#初始化
pymysql.install_as_MySQLdb()

django session 的增删取

存储
request.session[‘username’] = ‘123’

删除
del request.session[‘username’]

取值
request.session.get(“username”)

你可能感兴趣的:(python)