【问题标题】:Cannot saving form in django无法在 django 中保存表单
【发布时间】:2021-05-21 00:16:52
【问题描述】:

所以我使用 auth.models.user 来创建用户模型,默认情况下它通过 ('first_name', 'last_name', 'username', 'email', 'password1' ,'密码2')。和 forms.py:

class UserSignUpForm(UserCreationForm):

    class Meta:
        fields = ('first_name','last_name','username', 'email', 'password1', 'password2')
        model = user

    def __init__(self,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.fields['username'].label = 'Username'
        self.fields['email'].label = "Email Address"

我尝试允许用户从 UserSignUpForm 中的所有可用字段编辑他们的个人信息,除了密码字段。所以我创建了这个 views.py(基于函数的视图):

def edit_account(request):
    user = request.user
    form = UserSignUpForm(instance=user)

    if request.method == 'POST':
        form = UserSignUpForm(request.POST, instance=user,)
        
        if form.is_valid():
            form = UserSignUpForm(instance=user)
            form.save()
            messages.success(request, 'Your account has been updated.')
        return redirect('/dashboard/profile/')
    context = {'editform':form}
    return render(request, 'accounts/updateaccounts.html', context)

尝试在 html 页面中传递特定字段表单(如 {{editform.first_name}})(因为我不希望用户能够编辑他们的密码),但它仍然没有更新/保存新的用户数据。有什么方法可以保存吗?谢谢

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    在 html 文件中,您是否尝试过打印表单错误以查看发生了什么?试试这个:

    <form method = "POST">
     {% csrf_token %}
            {% if form.errors %}
            {% for field in form %}
                {% for error in field.errors %}
                    <div class="alert alert-danger">
                        <strong>{{ error|escape }}</strong>
                    </div>
                {% endfor %}
            {% endfor %}
    
            {% for error in form.non_field_errors %}
                <div class="alert alert-danger">
                    <strong>{{ error|escape }}</strong>
                </div>
            {% endfor %}
    
            {% endif %}
    </form>
    

    此外,您在 if request.POST 之外还有一个“form = UserSignUpForm(instance=user)”...

    在表单有效后,您还有一个“form = UserSignUpForm(instance=user)”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 1970-01-01
      • 1970-01-01
      • 2018-11-23
      • 2020-02-29
      相关资源
      最近更新 更多