我正在观看django教程,其中使用了以下代码:
class UserFormView(View):
form_class=UserForm
def post(self:request):
form=self.form_class(request.POST)
if form.is_valid():
user=form.save()
username=form.cleaned_data('username')
password=form.cleaned_data('password')
user.set_password(password)
user.save()
在本教程中,据说form.save()命令将字段数据存储到shell中,我发现这令人难以置信的误导。 save命令不应该将数据保存到数据库中的用户对象吗?接下来,他们使用set_password保存密码值,set_password
会做什么?它会散列密码输入吗?
最后,通过在用户上调用save()
将用户详细信息保存到数据库中。但是django怎么也知道哪个模型用户属于?当您调用form.save()并将结果分配给user
时,还会获取该信息吗?
谢谢
答案 0 :(得分:1)
我不知道这个“教程”是从哪里来的,但它的坏处和可能的程度一样。
假设UserForm
是(正确书写的)ModelForm
(您没有发布表单的定义),form.save()
应该已经做好了正确的事情(在数据库,其密码已经加密,并返回新创建的User
实例)。
我的建议:忘记此教程,请改用官方的教程,并使用官方文档了解更多详细信息。
答案 1 :(得分:0)
FIY,您的代码中存在缩进问题(或者只是格式问题)。 form.save()
的目的是将相关模型保存到数据库,对了。
对于set_password
,您也很正确,有关read the docs的更多信息。
Django知道模型及其所有数据,这是因为它拥有实例(在您的情况下为user
)。该数据可从该实例-see the docs获得。
希望有帮助。