在Django中编辑个人资料 [英] Edit profile in Django
本文介绍了在Django中编辑个人资料的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个用于编辑用户名
,密码
和头像的编辑配置文件表单
。但是这些字段位于两个模型中。User
和 allusers
(OneToOne)。如何通过合并两个字段来创建编辑配置文件表单?
Models.py
class allusers(models.Model):
user = models.OneToOneField(User,on_delete = models.CASCADE)
avatar = models.ImageField(upload_to ='retest / static / images /')
def __str __(self):
return str(self.user)
解决方案
使用自定义表单并在视图中处理它。
这是一个简单的示例。 / p>
forms.py
类UserEditForm (forms.Form):
用户名= forms.CharField()
密码= forms.CharField(widget = forms.PasswordInput)
化身= forms.FileField()
views.py
def user_edit_view(request):
,如果request.method == POST并request.FILES ['file']:
form = UserEditForm(request.POST,请求。文件)
如果form.is_valid():
your_file = request.FILES ['file']
new_username = form.cleaned_data.get('username')
new_password = form.cleaned_data.get('密码')
用户= User.objects.get(用户名= request.user.username)
all_user = allusers.objects.get(user = user)
user.username = new_username
user.set_password(new_password)
user.save()
alluser.avatar = your_file
alluser.save()
return render(........ .........)
返回HttpResponse(......)
What I need is an edit profile form to edit username
, password
and avatar
. But these fields are in two models.User
and allusers
(OneToOne). How can I create an edit profile form by combining the fields of both?
Models.py
class allusers(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
avatar = models.ImageField(upload_to='retest/static/images/')
def __str__(self):
return str(self.user)
解决方案
Use a custom form and handle it in the view.
Here's a simple example.
forms.py
class UserEditForm(forms.Form):
username = forms.CharField()
password = forms.CharField(widget=forms.PasswordInput)
avatar = forms.FileField()
views.py
def user_edit_view(request):
if request.method == "POST" and request.FILES['file']:
form = UserEditForm(request.POST, request.FILES)
if form.is_valid():
your_file = request.FILES['file']
new_username = form.cleaned_data.get('username')
new_password = form.cleaned_data.get('password')
user = User.objects.get(username=request.user.username)
all_user = allusers.objects.get(user=user)
user.username = new_username
user.set_password(new_password)
user.save()
alluser.avatar = your_file
alluser.save()
return render(.................)
return HttpResponse(......)
这篇关于在Django中编辑个人资料的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文