函数和方法的区别「建议收藏」

函数和方法的区别classFoo(object):def__init__(self):self.name="haiyan"deffunc(self):print(s

大家好,又见面了,我是你们的朋友全栈君。

函数和方法的区别

1、函数要手动传self,方法不用传

2、如果是一个函数,用类名去调用,如果是一个额方法,用对象去调用 
相关示例
函数和方法的区别「建议收藏」
函数和方法的区别「建议收藏」

class Foo(object):
    def __init__(self):
        self.name="haiyan"
    def func(self):
        print(self.name)

obj = Foo()
obj.func()
Foo.func(obj)

View Code

判断函数和方法的方式

函数和方法的区别「建议收藏」
函数和方法的区别「建议收藏」

from types import FunctionType,MethodType
obj = Foo()
print(isinstance(obj.func,FunctionType))  #False
print(isinstance(obj.func,MethodType))   #True   #说明这是一个方法

print(isinstance(Foo.func,FunctionType))  #True   #说明这是一个函数。
print(isinstance(Foo.func,MethodType))  #False

View Code

js和jquery绑定事件的几种方式

函数和方法的区别「建议收藏」

 三、创建表的一个limit_choices_to参数

limit_choices_to:屏蔽某些选项,只显示某些指定的选项。例如下面的,只让显示部门id是1001的

    consultant = models.ForeignKey(verbose_name="课程顾问", to='UserInfo', related_name='consultant',limit_choices_to={'depart_id':1001})

 四、include和inclusion_tag的区别

这两个都是处理代码冗余的,由于其他的页面也会有这样的功能,也要用到,我们可以吧它摘出来,在创建个文件夹写进去。导入进来

如果用include,这里面的数据得从后端传,
如果用inclusion_tag,你返回啥就会帮我们传啥,它既有自己的功能,也有include的功能,又可以处理数据

include的使用

复制代码
<body>
<h3>添加页面</h3>
{% include "stark/form.html" %}
{#<form action="">#}
{#    {{ form }}#}
{#</form>#}

#include导入的相当于下面注释的form表单的内容
复制代码

inclusion_tag的使用

1、创建一个templatetags的文件夹,在里面创建一个change_form.py的文件,在里面写代码,需要加上

@register.inclusion_tag这个装饰器
复制代码
#!usr/bin/env python
# -*- coding:utf-8 -*-
from django.template import Library
from django.urls import reverse
from stark.service.v1 import site

register = Library()
@register.inclusion_tag("stark/form.html")
def form(model_form_obj):
    from django.forms import ModelChoiceField
    from django.forms.boundfield import BoundField  # 数据都封装在这个类了
    new_form = []
    for bfield in model_form_obj:
        dic = {"is_popup": False, "item": bfield}  # 每一个bfield就是Form的字段,是一个对象
        if isinstance(bfield.field, ModelChoiceField):
            # print(bfield.field,"popup按钮")
            print(bfield, type(bfield))  # <class 'django.forms.boundfield.BoundField'>
            releated_model_name = bfield.field.queryset.model  # 找到关联的类名
            app_model_name = releated_model_name._meta.app_label, releated_model_name._meta.model_name  # 找到应用名和类名(目的是拼接url)
            base_url = reverse("stark:%s_%s_add" % (app_model_name))
            popup_url = "%s?_popupbackid=%s" % (base_url, bfield.auto_id)  #每一个input框的id
            print(bfield.auto_id,"111111")
            dic["is_popup"] = True
            dic["popup_url"] = popup_url
        new_form.append(dic)
    return {"form":new_form}   #返回的这个form是给了"stark/form.html"它里面的form,然后循环遍历
复制代码

3、使用

{% load change_form %}
<body>
<h3>编辑页面</h3>
{% form form %}
</body>

 4、stark/form.html

函数和方法的区别「建议收藏」
函数和方法的区别「建议收藏」

<form method="post" class="form-horizontal" novalidate>
    {% csrf_token %}
    {% for dic in form %}
        <div class="col-sm-6">
            <div class="form-group">
                <label for="inputEmail3" class="col-sm-2 control-label">{{ dic.item.label }}</label>
                <div class="col-sm-10" style="position: relative">
                    {{ dic.item }}
                    {% if dic.is_popup %}
                        <div style="position: absolute;right: -5px;top: 8px;z-index: 9999">
                            <a onclick="popUp('{{ dic.popup_url }}')" class="glyphicon glyphicon-plus"></a>  <!--注意要加引号,不然就会被当成变量了-->

                        </div>
                        {#                    判断如果是MOdelChoicesField是Fk#}
                        {#                    判断如果是MOdelChoicesField是Fk#}
                    {% endif %}
                    {{ dic.item.errors.0 }}
                </div>
            </div>
        </div>
    {% endfor %}
    <div class="col-sm-offset-11 col-sm-1">
        <input type="submit" class="btn btn-primary" value="提交">
    </div>
</form>
<script>
    function popupCallback(data) {
        var op = document.createElement("option");
        op.value = data.id;
        op.text = data.text;
        op.setAttribute("selected","selected");
        document.getElementById(data.popupbackid).appendChild(op)
    }
    function popUp(url) {
           var popupPage = window.open(url, url, "status=1, height:500, width:600, toolbar=0, resizeable=0");
    }

</script>

View Code

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/124486.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • swift2.0 UIImagePickerController 拍照 相册 录像

    swift2.0 UIImagePickerController 拍照 相册 录像

    2021年9月12日
    59
  • 字符串转json对象 java_js中对象转字符串的方法

    字符串转json对象 java_js中对象转字符串的方法1.JSON数据和Java对象的相互转换JSON数据和Java对象的相互转换*JSON解析器:*常见的解析器:Jsonlib,Gson,fastjson,jackson1.Java对象转换JSON1.使用步骤:1.导入jackson的相关jar包2.创建Jackson核心对象ObjectMapper3.调用ObjectMapper的相关方法进行转换…

    2022年9月16日
    2
  • 数据库去重操作_数据库数据去重语句

    数据库去重操作_数据库数据去重语句$test_data=M(‘hot’);//实例化数据表$data=$test_data-&gt;Distinct(true)-&gt;field(‘descriprion’)-&gt;order(‘descriptiondesc’)-&gt;select();//利用distinct方法去重$data=$test_data-&gt;group(‘description’)-…

    2022年10月1日
    2
  • C语言中的strstr函数的用法「建议收藏」

    C语言中的strstr函数的用法「建议收藏」strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。PHP语言函数编辑strstr()函数搜索一个字符串在另一个字符串中的第一次出现。该函数返回字符串的其余部分(从匹配点)。如果未找到所搜索的字符串,则返回false。语法

    2022年6月25日
    43
  • 云存储性能_内存256g和128g的区别

    云存储性能_内存256g和128g的区别与以磁盘存储为主的普通数据库相比,内存数据库的数据访问速度可以高出几个数量级,能大幅提高运算性能,更适合高并发、低延时的业务场景。不过,当前大部分内存数据库仍然采用SQL模型,而SQL缺乏一些必要的数据类型和运算,不能充分利用内存的特征实现某些高性能算法。仅仅是把外存的数据和运算简单地搬进内存,固然也能获得比外存好得多的性能,但还没有充分利用内存特征,也就不能获得极致的性能。下面我们来看看,有哪些适合内存特征的算法和存储机制,可以进一步提升内存数据库计算速度。我们知道,内存可以通过地址(指针)来访问

    2025年8月14日
    3
  • cubieboard mysql_Cubieboard开发笔记[通俗易懂]

    cubieboard mysql_Cubieboard开发笔记[通俗易懂]原创作品,转载请注明出处,谢谢!写在前面:亲测可用的搭建流程,但是此流程是针对32位系统的,如果您是64位系统,请勿采用本博文的方式。我搭这个环境居然折腾了一周时间,本来用32位系统好好的,但是官网非要推荐我用64位系统。因为最终打包必须在64位环境下实现。于是乎我一直在不断换系统版本,希望能按照对方工程师所描述的状况来实现,但是我将Error发给他时,他也无计可施。因而还是回到最熟悉的方式进行编…

    2022年7月22日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号