1、方法与函数的区别?
‘‘‘ class Foo(object): def __init__(self): self.name = ‘alex‘ def func(self): print(self.name) 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 注意: 方法,无需传入self参数;函数,必须手动传入self参数 ‘‘‘
2、models对象相关查询
‘‘‘ 例:model.UserInfo为models类 ‘‘‘ #(1)获取models类所在app名:model.UserInfo._meta.app_label #(2)获取models类的类名小写:model.UserInfo._meta.model_name #(3)获取models类中的字段内容:model.UserInfo._meta.get_field(‘username‘) #(4)获models类中字段的verbose_name:model.UserInfo._meta.get_field(‘username‘).verbose_name
3、用type创建类的实现
‘‘‘type创建TestModelForm类,参数分别为类名,继承类,类中属性‘‘‘
meta = type(‘Meta‘,(object,),{‘model‘:self.model_class,‘fields‘:‘__all__‘}) TestModelForm = type(‘TestModelForm‘,(ModelForm,),{‘Meta‘:meta}) #等价于 class TestModelForm(ModelForm): class Meta: model = self.model_class fields = "__all__"
4、反向生成url
#示例如下:namespace为名称空间,name为url别名
reverse("namespace:name")