django注册表,将信息发送到数据库

时间:2013-07-23 02:20:23

标签: django postgresql

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

我一直在谷歌周围,发现了很多不同的方式用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编辑这些表单的方式,我甚至不确定这将在我的数据库中创建哪些表。任何人都可以帮我解决我的任务吗?只需指导我一个文档,该文档解释了如何创建将信息发送到数据库的表单(并显示如何将信息发送到数据库以及如何访问该数据库)将会很棒!

2 个答案:

答案 0 :(得分:2)

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

所以,如果您还没有这样做,我建议您首先阅读Django教程:https://docs.djangoproject.com/en/dev/intro/tutorial01/。重读文档也许是值得的,尤其是modelsformsModelForms

(一旦完成上述操作,以下内容会更有意义。)

Django中的

Form是HTML表单的抽象,其中包含一些有助于处理表单提交的实用程序。然后可以通过电子邮件将这些表单提交,保存到数据库,忽略或任何您想要的内容!

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

  

我甚至不知道如何使用html编辑这些表单的外观   CSS

查看Customizing the form template(但首先要确保您了解了哪些模板 - 首先执行上面提到的Django教程!)

  

我甚至不确定这将在我的数据库中创建哪些表

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


一旦你理解了所有这些部分如何组合在一起,那么考虑使用django-registration,因为它可能会完成你想要做的大部分工作。

希望这有帮助! :)

答案 1 :(得分:0)

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

另一方面,django-registration涵盖了您想要的内容。使用该应用程序,用户可以注册,接收电子邮件确认,并将信息存储在数据库中。