取消外键检查
- Django admin修改密码返回错误
Cannot add or update a child row: a foreign key constraint fails (mxproject
.django_admin_log
, CONSTRAINTdjango_admin_log_user_id_c564eba6_fk_auth_user_id
FOREIGN KEY (user_id
) REFERENCESauth_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 %} <span>大于3</span> {% endif %}
网友评论