Django 语法

取消外键检查

  • Django admin修改密码返回错误
    Cannot add or update a child row: a foreign key constraint fails (mxproject.django_admin_log, CONSTRAINT django_admin_log_user_id_c564eba6_fk_auth_user_id FOREIGN KEY (user_id) REFERENCES auth_user (id))'
DATABASES = {
    'default': {
        ....
        'OPTIONS': {
            "init_command": "SET foreign_key_checks = 0;",
        }
    }
}

templates 模板继承

1、继承母板:{% extends '母板html文件名称' %}
2、包含子模板:{% include '子母板html 文件名' %}

  • 模板内容分块 {% block <分块名> %}{% endblock %}
  • 对某一区域分块命名,继承模板时覆盖 “母板” 中的同名块儿 **{% block title %}{% endblock %}
    3、利用request 请求对象中内容,例如session {{ request.session.current_user }}
  • 自定义python函数应用于模板
  • (方法一:simple_tag)
    1、在app 目录下创建templatetags 目录(名称不可更改)**
    2、创建任意.py文件,如xxoo.py ,在文件内写自定义功能的函数。使用django.template.Library()创建register对象(对象名不可更改)
    使用 @register**.simple_tag 装饰自定义函数
    示例xxoo.py
from django import template
register = template.Library()
@register.simple_tag
def plus(a1, a2):
return a1 + a2

对象名必须为register
3、模板中使用 {% load '书写自定义函数的文件名' %}

  • 函数用法 {% 函数名 参数...%}
{% load xxoo %}
{% plus 1 3 %}

优点:参数个数没有限制,缺点:不能使用if语句

  • (方法二:filter)
    1、在app 目录下创建templatetags 目录(名称不可更改)
    2、创建任意.py文件,如xxoo.py ,在文件内写自定义功能的函数。使用django.template.Library()创建register对象(对象名不可更改)
    使用 @register.simple_tag 装饰自定义函数
    示例xxoo.py
from django import template
register = template.Library()

@register.filter** def plus(a1, a2): # 形参最多支持2个 return a1 + a2
3、模板中使用 {% load '书写自定义函数的文件名' %} 加载
函数用法:{{ 参数1|函数名:参数二 }}

html中语法示例:

{{ 2|plus:1 }}

优点:可以使用if语句 缺点:定义函数时参数个数最多两个,使用时参数1|函数名:参数2 之间不能有空格

{% if 2|plus:2  > 3 %} 大于3 {% endif %}

你可能感兴趣的:(Django 语法)