Django 1.5.4 专题17 Form Service

一.修改settings.py的内容如下

二.修改django_test/forms.py的内容如下

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


class MyRegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)
    
    class Meta:
        model = User
        fields = ('username', 'email', 'password1', 'password2')
        
    def save(self, commit=True):
        user = super(MyRegistrationForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        # user.set_password(self.cleaned_data['password1'])
        
        if commit:
            user.save()
            
        return user        
class ContactForm1(forms.Form):
    subject = forms.CharField(max_length=100)   
class ContactForm2(forms.Form):
    sender = forms.EmailField()
class ContactForm3(forms.Form):
    message = forms.CharField(widget=forms.Textarea)        

三.修改django_test/views.py的内容如下

from django.contrib.formtools.wizard.views import SessionWizardView
from django.core.mail import send_mail
import logging
logr = logging.getLogger(__name__)
class ContactWizard(SessionWizardView):
    template_name = "contact_form.html"
    
    def done(self, form_list, **kwargs):
        form_data = process_form_data(form_list)
        
        return render_to_response('done.html', {'form_data': form_data})        
def process_form_data(form_list):
    form_data = [form.cleaned_data for form in form_list]
    
    logr.debug(form_data[0]['subject'])
    logr.debug(form_data[1]['sender'])
    logr.debug(form_data[2]['message'])
    
    send_mail(form_data[0]['subject'], 
              form_data[2]['message'], form_data[1]['sender'],
              ['hibbert.michael@gmail.com'], fail_silently=False)
    
    return form_data

四.修改django_test/templates/contact_form.html的内容如下

{% extends "base.html" %}

{% block content %}
  
  <h2>Contact Us</h2>
  <p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>
  {% for field in form %}
    {{field.error}}

  {% endfor %}
  
  <form action="/contact/" method="post">{% csrf_token %}
  <table>
  {{ wizard.management_form }}
  {% if wizard.form.forms %}
      {{ wizard.form.management_form }}
      {% for form in wizard.form.forms %}
          {{ form }}
      {% endfor %}
  {% else %}
      {{ wizard.form }}
  {% endif %}
  </table>
  {% if wizard.steps.prev %}
  <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">"first step"</button>
  <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">"prev step"</button>
  {% endif %}
  
  
  <input type="submit" value="Submit" />
    
  </form>
  
{% endblock %}
四.修改django_test/templates/done.html的内容如下
{% extends "base.html" %}

{% block content %}
  
  <h2>Thanks for contacting us!</h2>
  
  {% for form in form_data %}
    {{form}}

  {% endfor %}
  
{% endblock %}

五.修改django_test/urls.py的内容如下

from django_test.forms import ContactForm1, ContactForm2, ContactForm3
from django_test.views import ContactWizard
...
 url(r'^contact/$', ContactWizard.as_view([ContactForm1, ContactForm2, ContactForm3])),
...

六.效果如图






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值