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 <popov.gh...@gmail.com> 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 = ['m...@me.com']
>             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 mezzanine-users+unsubscr...@googlegroups.com.
> 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 mezzanine-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to