gpt4 book ai didi

python - 如何在保存之前更改 Django 表单字段值?

转载 作者:IT老高 更新时间:2023-10-28 22:10:50 27 4
gpt4 key购买 nike

if request.method == 'POST':
userf = UsersModelForm(request.POST)
username = userf.data['username']
password = userf.data['password']
passwordrepeat = userf.data['passwordrepeat']
email = userf.data['email']

我试过了:

    tempSalt = bcrypt.gensalt()
password = bcrypt.hashpw(password,tempSalt)
passwordrepeat = bcrypt.hashpw(passwordrepeat,tempSalt)

userf.data['password'] = password
userf.data['passwordrepeat'] = passwordrepeat

但我得到了错误。如何在保存之前更改 userf.data['password']userf.data['passwordrepeat'] 的值?

错误:

AttributeError at /register

This QueryDict instance is immutable

Request Method: POST
Request URL: http://127.0.0.1:8000/register
Django Version: 1.3.1
Exception Type: AttributeError
Exception Value:

This QueryDict instance is immutable

Exception Location: /usr/local/lib/python2.6/dist-packages/django/http/__init__.py in _assert_mutable, line 359
Python Executable: /usr/bin/python
Python Version: 2.6.6
Python Path:

['/home/user1/djangoblog',
'/usr/lib/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
'/usr/lib/python2.6/lib-old',
'/usr/lib/python2.6/lib-dynload',
'/usr/local/lib/python2.6/dist-packages',
'/usr/lib/python2.6/dist-packages',
'/usr/lib/python2.6/dist-packages/gst-0.10',
'/usr/lib/pymodules/python2.6',
'/usr/lib/pymodules/python2.6/gtk-2.0']

最佳答案

如果你需要在保存之前对数据做一些事情,只需创建一个函数,如:

def clean_nameofdata(self):
data = self.cleaned_data['nameofdata']
# do some stuff
return data

您只需要创建一个名称为 **clean_***nameofdata* 的函数,其中 nameofdata 是字段的名称,因此如果要修改密码字段,您需要:

def clean_password(self):

如果需要修改密码重复

def clean_passwordrepeat(self):

所以在里面,只需加密您的密码并返回加密后的密码。

我的意思是:

def clean_password(self):
data = self.cleaned_data['password']
# encrypt stuff
return data

因此,当您验证表单时,密码将被加密。

关于python - 如何在保存之前更改 Django 表单字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8924993/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com