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.