Django Meetup Bogotá. Class Based Views con ejemplos. Class Based Views with examples.
Código fuente: https://bitbucket.org/vero4ka/cbvexamples
Class Based Views with examles.
6. from django.views.generic import View
class MyViewClass(View):
def get(self, request, *args, **kwargs):
context = # calcular lo que usted desea pasar al template
return self.render_to_response(context)
def post(self, request, *args, **kwargs):
context = # calcular lo que usted desea pasar al template
return self.render_to_response(context)
View class
26. from django.shortcuts import redirect
class Contactenos(FormView):
form_class = ContactenosForm
template_name = "noticias/contactenos.html"
success_url = reverse_lazy("gracias")
def form_valid(self, form):
send_mail('Email de {0}'.format(form.cleaned_data["name"]),
form.cleaned_data["message"], form.cleaned_data["email"]
['example@'example.com], fail_silently=False)
return redirect(self.get_success_url())
FormView
enviar un correo cuando el
formulario es correcto
27.
28. Otros metodos:
def form_invalid(self, form):
"""
Acciones a realizar si el formulario es incorrecto.
"""
return self.render_to_response(self.get_context_data(form=form))
def get_initial(self):
"""
Definir un diccionario que será utilizado para proveer los datos iniciales del formulario
"""
return self.initial.copy()
FormView
29. Form:
from django.forms import ModelForm
from noticias.models import Noticia
class NoticiaForm(ModelForm):
class Meta():
model = Noticia
exclude = ('pub_date',)
View:
from django.views.generic import CreateView
class CreateNoticia(CreateView):
model = NoticiasModel
template_name = "noticias/form.html"
form_class = NoticiaForm
success_url = reverse_lazy("noticias")
CreateView
30.
31. View:
from django.views.generic import UpdateView
class UpdateNoticia(UpdateView):
model = NoticiasModel
template_name = "noticias/form.html"
form_class = NoticiaForm
success_url = reverse_lazy("noticias")
URLs:
url(r'^noticia/update/(?P<pk>d+)/$', views.UpdateNoticia.as_view(), name="update_noticia"),
UpdateView