code: def form_processor(request, page):
      
      form = FormForForm(page.form, RequestContext(request),
                         request.POST or None, request.FILES or None)
      if form.is_valid():
          url = page.get_absolute_url() + "?sent=1"
          if is_spam(request, form, url):
              return redirect(url)
          attachments = []
          for f in form.files.values():
              f.seek(0)
              attachments.append((f.name, f.read()))
          entry = form.save()
          subject = page.form.email_subject
          if not subject:
              subject = "%s - %s" % (page.form.title, entry.entry_time)
          fields = [(v.label, format_value(form.cleaned_data[k]))
                    for (k, v) in form.fields.items()]
          context = {
              "fields": fields,
              "message": page.form.email_message,
              "request": request,
          }
          email_from = page.form.email_from or settings.DEFAULT_FROM_EMAIL
          email_to = form.email_to()
          if email_to and page.form.send_email:
              send_mail_template(subject, "email/form_response", email_from,
                                 email_to, context)
          headers = None
          if email_to:
              # Add the email entered as a Reply-To header
              headers = {'Reply-To': email_to}
          email_copies = split_addresses(page.form.email_copies)
          if email_copies:
              send_mail_template(subject, "email/form_response_copies",
                                 email_from, email_copies, context,
                                 attachments=attachments, headers=headers)
          form_valid.send(sender=request, form=form, entry=entry)
          return redirect(url)
      form_invalid.send(sender=request, form=form)
      return {"form": form}
docs: Display a built form and handle submission.