如何在 Django 默认用户表中保存电子邮件和姓名字段
Posted
技术标签:
【中文标题】如何在 Django 默认用户表中保存电子邮件和姓名字段【英文标题】:How to save the email and name fields in the Django deafult User table 【发布时间】:2011-04-03 07:25:13 【问题描述】:我想将电子邮件和姓名字段保存在名为 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()
请帮助我将表单输入保存在数据库中
【问题讨论】:
【参考方案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
【讨论】:
以上是关于如何在 Django 默认用户表中保存电子邮件和姓名字段的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 的 FileField 中保存来自传入电子邮件的附件?