Spicing up Django:�Intro to Mezzanine CMS
Ed Rivas
@je92rivas
Mezzanine CMS
Mezzanine trivia
Mezzanine is...
Above everything else:
Mezzanine is just Django
Let’s get started!
Quickstart
Write your own app
The polls app
Installing apps
Like you do in any Django project
Spicing it up
Some new requirements
The original model
# models.py
class Poll(models.Model):� question = models.CharField(max_length=200)
The Displayable model
The Displayable fields
The Displayable model
# models.py
from mezzanine.core.models import Displayable��class Poll(Displayable):� pass� # Yep, that’s it
The original admin
# admin.py
class PollAdmin(admin.ModelAdmin):� fields = ['question']� inlines = [ChoiceInline]� list_display = ('question',)� search_fields = ['question']
The Displayable admin
# admin.py
from mezzanine.core.admin import DisplayableAdmin��class PollAdmin(DisplayableAdmin):� inlines = [ChoiceInline]
The published manager
# views.py
class IndexView(generic.ListView):� template_name = 'polls/index.html'� context_object_name = 'latest_poll_list'�� def get_queryset(self):� return (Poll.objects.published()� .order_by("-publish_date")[:5])
The published manager
Resulting view content:
The Orderable model
The Orderable model
# models.py
from mezzanine.core.models import Orderable��class Choice(Orderable):� poll = models.ForeignKey(Poll)� choice_text = models.CharField()� votes = models.IntegerField(default=0)
Dynamic inlines
# admin.py
from mezzanine.core.admin import TabularDynamicInlineAdmin��class ChoiceInline(TabularDynamicInlineAdmin):� model = Choice� readonly_fields = ('votes',)
Templates
Templates
{% extends 'base.html' %}��{% block title %}{{ poll.title }}{% endblock %}��{% block main %}�...�{% endblock %}
Review
Writing Mezzanine apps
Not pictured
Further reading
Thanks!
Ed Rivas
@je92rivas
bit.ly/mezz-polls
github.com/jerivas/mezzanine-poll-demo