在Django中编辑个人资料 [英] Edit profile in Django

查看:99
本文介绍了在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆