2

所以我更改了 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 编辑这些表单的外观,我什至不确定这将在我的数据库中创建哪些表。谁能帮我完成我的任务?只需将我引导到一个文档,该文档解释了如何创建将信息发送到数据库的表单(并显示信息如何发送到数据库以及如何访问该数据库)会很棒!

4

2 回答 2

2

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

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

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

FormDjango 中的 s 是 HTML 表单的抽象,带有一些有助于处理表单提交的实用程序。这些表单提交可以通过电子邮件发送、保存到数据库、忽略或任何您想要的!

因为表单经常以某种方式映射到 Django 模型,ModelForm所以 s 可以帮助您。例如,通常您可能有一个表单提交,它作为模型实例保存到数据库中。因此,与其创建Form包含与现有模型几乎相同的字段的 a,aModelForm有助于减少这种重复。查看ModelForm文档中的示例

我什至不知道如何使用 html 和 css 编辑这些表单的外观

查看自定义表单模板(但首先要确保您了解模板是什么 --- 先做上面提到的 Django 教程!)

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

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


一旦你了解了所有这些部分是如何组合在一起的,然后考虑使用django-registration,因为它可能完成了你想做的大部分事情。

希望这可以帮助!:)

于 2013-07-24T02:48:03.410 回答
0

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

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

于 2013-07-23T07:00:22.103 回答