2013-07-23 63 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。使用該應用程序用戶可以註冊,接收電子郵件確認信息並將信息存儲在數據庫中。

相關問題