您的位置:首页 > 编程语言 > Go语言

Django 1.5.4 专题17 Form Service

2013-10-14 14:45 330 查看
一.修改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])),
...

六.效果如图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: