From 09e89326aa1f5049ff8cfd4e9d4d1237dd2a0176 Mon Sep 17 00:00:00 2001 From: Jon Smajda Date: Sat, 10 Oct 2015 12:12:50 -0500 Subject: [PATCH] Replace home class-based view with function based view. Far easier to introduce to beginners to Django. Keeping both views around because it's nice to have two identical views in both styles to compare. --- pythonkc_site/urls.py | 5 +++-- pythonkc_site/views.py | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/pythonkc_site/urls.py b/pythonkc_site/urls.py index 19fc176..465f482 100644 --- a/pythonkc_site/urls.py +++ b/pythonkc_site/urls.py @@ -5,14 +5,15 @@ from django.conf.urls import patterns from django.conf.urls import url from django.views.decorators.cache import cache_page -from pythonkc_site.views import PythonKCHome +from pythonkc_site.views import PythonKCHome, home # Uncomment the next two lines to enable the admin: # from django.contrib import admin # admin.autodiscover() urlpatterns = patterns('', - url(r'^/?$', cache_page(60 * 5)(PythonKCHome.as_view()), name='home'), + #url(r'^/?$', cache_page(60 * 5)(PythonKCHome.as_view()), name='home'), + url(r'^/?$', cache_page(60 * 5)(home), name='home'), # Examples: # url(r'^$', 'pythonkc_site.views.home', name='home'), diff --git a/pythonkc_site/views.py b/pythonkc_site/views.py index b92789a..6c35d85 100644 --- a/pythonkc_site/views.py +++ b/pythonkc_site/views.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- +from django.shortcuts import render, redirect from django.core.urlresolvers import reverse from django.views.generic import FormView from pythonkc_site.contact.email import send_contact_form_email @@ -8,6 +9,25 @@ from pythonkc_site.meetups import events +# 1. function-based view +def home(request): + if request.method == 'POST': + form = ContactForm(request.POST) + if form.is_valid(): + send_contact_form_email(**form.cleaned_data) + return redirect('{0}?contact_sent=yes'.format(reverse('home'))) + else: + form = ContactForm() + + context = { + 'next_event': events.get_next_event(), + 'past_events': events.get_past_events(), + 'form': form + } + return render(request, 'index.html', context) + + +# 2. identical class-based view class PythonKCHome(FormView): template_name = 'index.html' form_class = ContactForm