我在UserCreationForm中看到了这个:
def clean_username(self):
# Since User.username is unique, this check is redundant,
# but it sets a nicer error message than the ORM. See #13147.
username = self.cleaned_data["username"]
try:
User._default_manager.get(username=username)
except User.DoesNotExist:
return username
raise forms.ValidationError(self.error_messages['duplicate_username'])
此方法可以这种方式使用:
def register_me(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
uname = form.clean_username
请参阅上一行。该方法没有()...为什么???
答案 0 :(得分:1)
这是因为python不是强类型的(所以你可以将任何类型的对象分配给任何变量)并且因为函数是第一类对象:你可以将它们分配给变量,就像任何普通对象一样。
在将* form.clean_username *分配给 uname 后的示例中,您可以使用 uname 变量,如下所示: uname()将与* form.clean_username()*相同,因为您已将 uname 分配给* form.clean_username *
引用的“runnable”