美文网首页
Django 语法

Django 语法

作者: IPing | 来源:发表于2020-10-17 08:44 被阅读0次

    取消外键检查

    • 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 %} <span>大于3</span> {% endif %}
    

    相关文章

      网友评论

          本文标题:Django 语法

          本文链接:https://www.haomeiwen.com/subject/gdmnpktx.html