Hey Bob, the problem is probably the use of page.form.  The use of "form"
in that case refers to the name of the model, which in Mezzanine's form
page_processor case is form, in your case it should be homepage.  If you
change all uses in the template from page.form to page.homepage I think you
will at least get much closer.


On Sun, May 18, 2014 at 8:43 AM, bob hosk <[email protected]> wrote:

> I've made a custom HomePage model, so I can edit the home page content
> (headers etc)
> from the admin easily. I'm trying to add a 'Contact us' form to the bottom
> of this page.
>
> In my 'myproject/mytheme' dir I have 'page_processors.py' containing
>
> from django import forms
> from django.http import HttpResponseRedirect
> from mezzanine.pages.page_processors import processor_for
> from .models import HomePage
>
> class ContactForm(forms.Form):
>     subject = forms.CharField(max_length=100, initial='The subject...',
> required=True)
>     message = forms.CharField(max_length= 5000, widget=forms.Textarea,
> initial='Hello, ', required=True)
>     sender = forms.EmailField(initial='Your e-mail...')
>     rchoices= (
>               ('WORK','Hire Me'),
>               ('PROB','Site problems'),
>               ('OTH', 'Other'),
>               )
>     regarding = ChoiceField(widget=forms.Select(), choices=rchoices,
> blank_choice='Regarding?', initial='blank_choice')
>
> @processor_for(HomePage)
> def contact_form(request, page):
>     form = ContactForm()
>     if request.method == 'POST':
>         form = ContactForm(request.POST)
>         if form.is_valid(): # All validation rules pass
>
>             subject = form.cleaned_data['subject']
>             message = form.cleaned_data['message']
>             sender = form.cleaned_data['sender']
>             recipients = ['[email protected]']
>             print message
>             if cc_myself:
>                 recipients.append(sender)
>
>             from django.core.mail import send_mail
>             send_mail(subject, message, sender, recipients)
>
>             redirect = request.path + "?submitted=true"
>             return HttpResponseRedirect(redirect) # Redirect after POST
>
>     return {'form': form}
>
> As for the template for the custom home page, it {% extends
> "pages/page.html" %},
> and at the bottom of the block I have
>
> {{ block.super }}
> {% if request.GET.sent %}
>     {% editable page.form.response %}
>     {{ page.form.response|richtext_filters|safe }}
>     {% endeditable %}
> {% else %}
>     {% with page.form as page_form %}
>     {% editable page_form.content %}
>     {{ page_form.content|richtext_filters|safe }}
>     {% endeditable %}
>     {% endwith %}
>
>     {% errors_for form %}
>
>     <form class="mezzanine-form" method="post"{% if form.is_multipart %}
> enctype="multipart/form-data"{% endif %}>
>         {% fields_for form %}
>         <div class="form-actions">
>             <input class="btn btn-primary btn-lg" type="submit" value="{{
> page.form.button_text }}">
>         </div>
>     </form>
> {% endif %}
>
> which I copied from 'mezzanine/forms/templates/pages/form.html' mostly.
>
> This gives a variable not found error when the homepage is loaded. If
> instead I did
> {% fields_for page.form %} then I don't get an error but nor do the fields
> appear to be rendered.
>
> How do I get this to work?
>
>
>
>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Mezzanine Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Mezzanine Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to