2013-07-23 66 views
1

因此,我更改了settings.py,以便我的django应用程序使用PostgreSQL数据库。数据库中没有任何内容。我想要的是,在我的网站的首页上,注册表格要求提供名字,姓氏,电子邮件,未使用的用户名(我的数据库中不存在的用户名)和年龄。人们提交有效表单后,我想发送确认电子邮件到他们提供的电子邮件地址。如果发送了确认电子邮件,我想将他们使用表单提交的所有信息放入我的注册用户数据库中。将信息发送到数据库的django注册表格

我一直在google'ing周围,发现很多不同的方式与Django创建窗体,我不知道什么是我最好的方式来做到这一点。我首先发现这个(https://docs.djangoproject.com/en/dev/topics/forms/),其中谈到能够通过电子邮件发送给定的电子邮件地址。接下来,我找到了modelForm(https://docs.djangoproject.com/en/dev/topics/forms/modelforms/)。然后,我从djangobook中找到了这两个,它们谈论了登录和退出(http://www.djangobook.com/en/2.0/chapter14.htmlhttps://docs.djangoproject.com/en/1.4/topics/auth/),然后我在这里找到了django-registration 1.0文档(https://django-registration.readthedocs.org/en/v1.0/genindex.html#R)。这将是完成我想要做的事情的最佳地点?

我试图从一开始就是链接:

from django import forms 

class ContactForm(forms.Form): 
    first_name = forms.CharField() 
    last_name = forms.CharField() 
    sender = forms.EmailField() 
    user_name = forms.CharField() 
    age = forms.forms.IntegerField() 

然后做

from django.shortcuts import render 
from django.http import HttpResponseRedirect 

def contact(request): 
    if request.method == 'POST': 
     form = ContactForm(request.POST) 
     if form.is_valid(): 
      first_name = form.cleaned_data['first_name'] 
      last_name = form.cleaned_data['last_name'] 
      sender = form.cleaned_data['sender'] 
      user_name = form.cleaned_data['user_name'] 
      age = form.clean_data['age'] 

      recipients = [] 
      recipients.append(sender) 

      from django.core.mail import send_mail 
      send_mail(first_name, last_name, sender, recipients) 
      form.save() 
      return HttpResponseRedirect('/thanks/') 
    else: 
     form = ContactForm() 

return render(request, 'contact.html', { 
    'form': form, 
}) 

这是我的尝试,我猜这是非常错误的,因为我甚至不知道如何编辑这些形式看起来使用HTML和CSS的方式,我什至不知道这将创建在我的数据库中的表。任何人都可以帮我解决我的任务吗?简单地指导我解释如何创建将信息发送到数据库(并显示信息如何发送到数据库以及如何访问该数据库)的文档将非常棒!

+0

返回语句没有正确缩进,并不像这样工作。如果你修复了这个问题,代码示例似乎就可以工作。不过请阅读我关于Django Models for persistent database storage的回答。 – bouke

+1

'age = forms.forms.IntegerField()'?这是什么? –

回答

2

你不远处:)我认为你需要的是更多地了解所有这些Django部件如何组合在一起。

所以,如果你还没有这样做,我真的建议你先通过Django教程:https://docs.djangoproject.com/en/dev/intro/tutorial01/。重新阅读文档也是值得的,特别是models,formsModelForms

(下面会更有意义一旦你做到了以上。)

Form S IN Django的是一些公用事业与处理表单提交帮助的HTML形式的抽象。这些表单提交可以通过电子邮件发送,保存到数据库,忽略或任何你想要的!

由于表单通常以某种方式映射到Django模型,因此ModelForm可帮助您解决问题。例如,您可能经常会将表单提交作为模型实例保存到数据库中。因此,ModelForm不是创建一个包含与现有模型几乎相同的字段的Form,而是帮助减少这种重复。检查出ModelForm example in the docs

我甚至不知道如何编辑这些形式看起来使用HTML和CSS 的方式

退房Customizing the form template(但首先要确保你明白什么模板---做Django的上述的第一种教程!)

我什至不知道这会在我的数据库中创建哪些表

Django将为您处理大部分数据库详细信息,包括保存(通过模型save()方法)和创建表(当您运行python manage.py syncdb时)。但是,再次,请先查看Django教程/文档!


一旦你了解所有这些部分是如何结合在一起,那么可以考虑使用django-registration,因为它很可能做了大部分你想要做什么。

希望这会有所帮助! :)

0

您想了解有关Django Models的信息,该信息可以保存信息并将该信息保存到数据库中。

在另一张纸条上,你想要的是django-registration。使用该应用程序用户可以注册,接收电子邮件确认信息并将信息存储在数据库中。

相关问题