【问题标题】:How to save the email and name fields in the Django deafult User table如何在 Django 默认用户表中保存电子邮件和姓名字段
【发布时间】:2023-03-09 17:11:01
【问题描述】:

我想将电子邮件和姓名字段保存在名为 UserSignup 的 django 默认表中 我的models.py是:

from django.db import models
class UserSignup(models.Model):
    mailid      = models.CharField(max_length=100)
    name        = models.CharField(max_length=100)

我的views.py是:

from django import views
from django.shortcuts import render_to_response
from django.template import RequestContext
from Deals.signup.forms import signup
from django.contrib.auth.models import User
from django.http import HttpResponse

def usersignup(request,form_class=signup):

   form = form_class()
   print form
   if form.is_valid():  
       mail= UserSignup(mailid=request.POST['mailid'])
       mail.save()
       name= UserSignup(name=request.POST['name'])
       name.save()
  else:
       form = form_class()    
  return render_to_response('signup/registration_form.html',{'form':form})

forms.py 是

from django import forms
from django.contrib.auth.models import User
from Deals.signup.models import *
from django.utils.translation import ugettext_lazy as _

class signup(forms.Form):

    email = forms.EmailField(widget=forms.TextInput(),
                         label=_("Email address:"))

    username = forms.RegexField(regex=r'^\w+$',
                            max_length=30,
                            widget=forms.TextInput(),
                            label=_("Name:"))

def save(self,request,update):

    name =  self.cleaned_data['name']
    name.save()
    email =  self.cleaned_data['email']
    email.save()

请帮助我将表单输入保存在数据库中

【问题讨论】:

    标签: python django forms save


    【解决方案1】:

    正确检查 Django 文档http://docs.djangoproject.com/en/dev/topics/forms/

    只需在 views.py 中更改您的代码。

    def usersignup(request,form_class=signup):
    
        if request.method == 'POST': #If its a form submission, the method is POST
            form = form_class(request.POST)
            if form.is_valid():  
                 newuser = form.save()
        else: #Else display the form 
            form = form_class()    
    
        return render_to_response('signup/registration_form.html',{'form':form})
    

    表单文件中的“保存”功能不正确,不需要。

    附带说明,您的“UserSignup”不是默认用户表。那将是 Django 提供的用户模型。这已经具有您在 UserSignup 中创建的字段。为什么不使用 Django 的那个特性呢?

    【讨论】:

    • if request.method = 'POST': 应该使用比较 == 来代替。
    • @kriegar - 是的,现在已修复。我从头顶写了代码。
    【解决方案2】:

    将模型元素一次性保存在表单中可能会更好。

    def save(self):
        new_user = User.objects.create_user(name = self.cleaned_data['name'],
                                            email = self.cleaned_data['email'])
    return new_user
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 2019-04-06
      相关资源
      最近更新 更多