2016-05-15 8 views
0

私のプログラムでajax呼び出しを使用しています。__init __()予期しないキーワード引数 'password'がありますdjango

`<form id = "post_submit" action="{% url "apply" %}" method="POST"> 
     {% csrf_token %} 
     {% for field in form %} 
      <p>{{field.label}} : {{field}}</p> 
     {% endfor %} 

     <p><input type="submit" name="Submit"></p> 
    </form> 
    <p id="click_option">Click here.</p> 

のAjax呼び出しを使用して作られています:

次は私のテンプレートで、

class Student(models.Model): 
    name = models.CharField(max_length = 20) 
    password = models.CharField(max_length = 100) 
    email = models.CharField(max_length = 10) 


class StudentForm(forms.ModelForm): 
    class Meta: 
     model = Student 
     fields = '__all__ 

を今:私はモデルで、以下のいる

TypeError: __init__() got an unexpected keyword argument 'password' 

:私のようなエラーを取得しています

$.ajax({ 


// using this for csrf handling 




     // alert(" i am in ajax"); 
     // console.log(" iam "); 
     url : "/apply/", 
     type : "POST", 
     data : 
     { 
      csrfmiddlewaretoken:document.getElementsByName('csrfmiddlewaretoken')[0].value, 
      name : $('#id_name').val(), 
      email : $('#id_email').val(), 
      password : $('#id_password').val(), 
     }, 
     success: function(json) { 
      alert("Congratulations! You scored: " + json['status']); 

     }, 

     // error 




    }) 


}); 

バックエンドのビューは次のとおりです。 (リクエスト)を適用
はDEF:あなたは手動でPOSTデータの中から値を取得する必要はありません

if request.method == 'POST': 
      name = request.POST.get('name') 
      email = request.POST.get('email') 
      password = request.POST.get('password') 

      student = StudentForm(name = name, email = email, password = password) 
      student.save() 

      data = {"status" : "success"} 
      return JsonResponse(data) 
     else: 
      data = {"status" : "failure"} 

      return JsonResponse(data) 
+0

定義されていないStudentFormのコンストラクタを呼び出しています。正しい方法は、オブジェクトを作成し、値を割り当てることができます – Freddy

+0

OK、私は問題がある。しかし、なぜ 'password'だけにタイプエラーがあるのですか?なぜすべての価値観ではないでしょうか? – learner

+0

'TypeError'は一度に1つのフィールド名しか表示しません。 'student = StudentForm(name = name、email = email)'に変更した場合は、他のフィールドのいずれかと同じエラーが発生します。 – Alasdair

答えて

2

、フォームはあなたのためにそれの世話をします。

フォームが有効かどうかを確認したら、save()を呼び出してモデルインスタンスを保存できます。

form = StudentForm(request.POST) 
if form.is_valid() 
    student = form.save() 

最後に、あなたのStudentモデルはCharFieldpasswordを記憶しています。パスワードをプレーンテキストで保存することは安全ではありません。 Django's authentication systemはあなたのためにパスワードをハッシュします。これを使って。

+1

は、djangoの認証システムについての示唆を得た。どうもありがとうございました。 – learner

関連する問題