2017-08-18 35 views
0

私はdjangoの初心者です。同じビューに2つの異なるレジスタを入れたいと思います。しかし、私は自分のフォームを作って、別のURLをアクションタグに入れたいと思っています。私は1つのフォームでそれを行いましたが、私が2番目のフォームをpuyするとき、これは機能しません。1つのビューで2つのフォームDjango

これは私のmodels.pyです:

from django.db import models 

class userProfile(models.Model): 
    usermail = models.CharField(max_length=264) 
    username = models.CharField(max_length=264) 
    userpass = models.CharField(max_length=264) 

class companyProfile(models.Model): 
    companymail = models.CharField(max_length=264) 
    companyname = models.CharField(max_length=264) 
    companypass = models.CharField(max_length=264) 

これは私のforms.pyです:

from django import forms 
from Pruebas_app.models import companyProfile, userProfile 

class registerCompany(forms.Form): 
    companypassconf = forms.CharField() 
    class Meta(): 
     model = companyProfile 
     fields = ['companymail','companyname', 'companypass'] 
     labels = {'companymail': '', 'companyname': '', } 
     widgets = { 'companypass': forms.PasswordInput(),} 

class registerUser(forms.Form): 
    userpassconf = forms.CharField() 
    class Meta(): 
     model = companyProfile 
     fields = ['usermail','username', 'userpass'] 
     labels = {'usermail': '', 'username': '', } 
     widgets = {'userpass': forms.PasswordInput(),} 

そして、これは私のtemplateです:

<form action="{ url 'user_register'}" method="post"> 
    <input type="text" name="username"> 
    <input type="email" name="usermail"> 
    <input type="password" name="userpass"> 
    <input type="password" name="userpassconf"> 
    <input type="submit" value="Register"> 
</form> 
<form action="{ url 'company_register'}" method="post"> 
    <input type="text" name="companyname"> 
    <input type="email" name="companymail"> 
    <input type="password" name="companypass"> 
    <input type="password" name="companypassconf"> 
    <input type="submit" value="Register"> 
</form> 

そして、これは私のviews.pyです:

from django.shortcuts import render 
from Pruebas import forms 
from Pruebas.forms import registerCompany, registerUser 
from django.http import HttpResponse 

def user_register(request): 
    form = forms.registerUser() 
    regd = False 
    passmatch = True 
    if request.method == "POST": 
     form = registerUser(request.POST) 
     if form.is_valid(): 
      form_data = form.cleaned_data 
      print (form_data.get("userpass")) 
      if form_data.get("userpass") == form_data.get("userpassconf"): 
       passmatch = True 
       form.save() 
       regd = True 
       print("saved") 
      else: 
       passmatch = False 
     else: 
      print("error") 
      red = 'Pruebas/register.html' 
      regd = False 
    return render(request, 'Pruebas/register.html', {'registered': regd, "matchPass": passmatch}) 

私のフォームから1つのユニークなビューにデータを送信しようとしましたが、私はユーザーレジスタからデータを受け取ることができます。私は何が間違っているのかわからない、または私がこの作品を作るために何をしなければならないか、助けてください!

答えて

0

あなたのフォームでは、メタクラスを定義せず、userpassconfで行っているようにフィールドを表示してください。フォームを単一のフォームにまとめて、すでに行っているようにビュー内のデータを処理するだけで、2つのインスタンスを作成することもできます。以下のような何か:

if request.method == "POST": 
    form = registerUser(request.POST) 
    if form.is_valid(): 
    form_data = form.cleaned_data 
    if form_data.get("userpass") == form_data.get("userpassconf"): 
     passmatch = True 
     new_user = userProfile() 
     new_user.usermail = form_data.get("usermail") 
     new_user.username = form_data.get("username") 
     new_user.save() 

だから基本的にはあなただけのあなたに保存したいものは何でもモデルのインスタンスを作成し、それにフォームデータを割り当て、それを保存しています。モデルをビューファイルにインポートすることを忘れないでください。

関連する問題