博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数和方法的区别
阅读量:7063 次
发布时间:2019-06-28

本文共 3113 字,大约阅读时间需要 10 分钟。

一、函数和方法的区别

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)

判断函数和方法的方式

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

二、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的使用

添加页面

{
% include "stark/form.html" %}{
#
#}{
# {
{ form }}#}{
#
#}
#include导入的相当于下面注释的form表单的内容

inclusion_tag的使用

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

@register.inclusion_tag这个装饰器
#!usr/bin/env python# -*- coding:utf-8 -*-from django.template import Libraryfrom django.urls import reversefrom stark.service.v1 import siteregister = 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)) #
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 %}

编辑页面

{
% form form %}

 4、stark/form.html

{
% csrf_token %} {
% for dic in form %}
{
{ dic.item }} {
% if dic.is_popup %}
{
# 判断如果是MOdelChoicesField是Fk#} {
# 判断如果是MOdelChoicesField是Fk#} {% endif %} {
{ dic.item.errors.0 }}
{
% endfor %}

 

转载地址:http://slnll.baihongyu.com/

你可能感兴趣的文章
素材锦囊——50个高质量的 PSD 素材免费下载《上篇》
查看>>
【转】oc中消息传递机制-附:对performSelector方法的扩充
查看>>
oracle的nvl和sql server的isnull
查看>>
[转]虚拟机下Ubuntu共享主机文件(Ubuntu、VMware、共享)
查看>>
高血压 治疗 偏方
查看>>
HtmlAttribute HTML属性处理类
查看>>
[书目20130316]jQuery UI开发指南
查看>>
Sql Server系列:开发存储过程
查看>>
Find INTCOL#=1001 in col_usage$?
查看>>
AutoCAD 命令统计魔幻球的实现过程--(3)
查看>>
dp学习笔记1
查看>>
newlisp debugger
查看>>
Java进阶02 异常处理
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Heritrix 3.1.0 源码解析(十二)
查看>>
java 动态代理
查看>>
微信5.0绑定银行卡教程
查看>>
数字转换为壹仟贰佰叁拾肆的Java方法
查看>>
引发网页布局灾难的7个大错误
查看>>
一个表单对应多个提交按钮,每个提交按钮对应不同的行为
查看>>