【问题标题】:django Keyerror passworddjango Keyerror 密码
【发布时间】:2017-12-16 04:20:05
【问题描述】:

我正在尝试创建一个允许用户编辑其个人资料信息的编辑用户个人资料功能。当我点击表单中的提交时,它在专辑/个人资料/编辑中显示为 keyerror 密码。

Error Screen Shot

Views.py:

from django.views import generic
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
from django.contrib.auth.models import User
from django.contrib.auth.forms import PasswordChangeForm
from django.views.generic import View
from albums.models import Album, Song

from .forms import Userforms, EditProfileForm

class Profile_edit(View):
    form_class = EditProfileForm
    template_name = 'accounts/edit_profile.html'

    def get(self, request):
        form = self.form_class(None)
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = self.form_class(request.POST)

        if form.is_valid():
            form.save()
            return redirect('profile')
        return render(request, self.template_name, {'form':form})

forms.py:

from django.contrib.auth.models import User
from django.contrib.auth.forms import UserChangeForm
from django import forms

class EditProfileForm(UserChangeForm):

    class Meta:
        model = User
        fields = {'email', 'first_name', 'last_name', 'password'}

urls.py

url(r'^profile/edit/$', views.Profile_edit.as_view(), name='Profile_edit'),

edit_profile.html:

{% extends 'albums/base.html' %}

{% block title %}Sign Up{% endblock %}

{% block albums_active %}active{% endblock %}

{% block body %}

<div class="container-fluid">

<div class="row">

<div class="col-sm-12 col-md-7">

<div class="panel panel-default">

<div class="panel-body">

{% extends 'albums/base.html' %}

{% block title %}Sign Up{% endblock %}

{% block albums_active %}active{% endblock %}

{% block body %}

<form class="form-horizontal" action="" method="post" enctype="multipart/form-data">

  {% csrf_token %}

  {% include 'albums/form-template.html' %}

<button type="submit" class="btn btn-success">Submit</button>

</form>

{% endblock %}

【问题讨论】:

  • “密码”是否可能是 Django 表单基础结构中某处的保留关键字?您能否发布更多回溯,以便我们可以看到views.py 中的哪些地方出了问题?屏幕截图中显示的异常位置不是很有帮助。
  • fields = {'email', 'first_name', 'last_name', 'password'} 将它括在花括号中似乎很奇怪,从而使它成为一个集合。我见过的例子使用列表或元组。也许这就是问题所在?

标签: django python-3.x keyerror


【解决方案1】:

初始化时需要将用户实例传递给表单,否则表单不知道你正在编辑哪个用户。

def get(self, request):
    form = self.form_class(instance=request.user)

def post(self, request):
    form = self.form_class(request.POST, instance=request.user)

【讨论】:

  • 在views.py中检查它应该是password=cd['passowrd']而不是password=cd['password']基本上密码是保留关键字
猜你喜欢
  • 2017-10-21
  • 2013-10-17
  • 1970-01-01
  • 2020-05-21
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
相关资源
最近更新 更多