diff --git a/program/templates/speaker_detail.html b/program/templates/speaker_detail.html
new file mode 100644
index 00000000..15bf28bc
--- /dev/null
+++ b/program/templates/speaker_detail.html
@@ -0,0 +1,21 @@
+{% extends 'base.html' %}
+{% load commonmark %}
+
+{% block content %}
+
+
{{ speaker.name }}
+
+{{ speaker.biography|commonmark }}
+
+
+{% if speaker.events.exists %}
+{% for event in speaker.events.all %}
+
+ {{ event.title }}
+ {{ event.abstract|commonmark }}
+
+{% endfor %}
+
+{% endif %}
+
+{% endblock %}
diff --git a/program/urls.py b/program/urls.py
index da9e632d..fd060447 100644
--- a/program/urls.py
+++ b/program/urls.py
@@ -5,7 +5,7 @@ urlpatterns = [
url(r'^(?P\d{4})-(?P\d{2})-(?P\d{2})/$', views.ProgramDayView.as_view(), name='day'),
url(r'^$', views.ProgramOverviewView.as_view(), name='index'),
url(r'^speakers/$', views.SpeakerListView.as_view(), name='speaker_index'),
- url(r'speakers/(?P[-_\w+]+)/$', views.SpeakerDetail.as_view(), name='speaker_detail'),
+ url(r'speakers/(?P[-_\w+]+)/$', views.SpeakerDetailView.as_view(), name='speaker_detail'),
url(r'^events/$', views.EventListView.as_view(), name='events_index'),
url(r'^(?P[-_\w+]+)/$', views.EventDetailView.as_view(), name='event'),
]
diff --git a/program/views.py b/program/views.py
index 925ddb53..38b73162 100644
--- a/program/views.py
+++ b/program/views.py
@@ -6,6 +6,11 @@ from django.views.generic import ListView, TemplateView, DetailView
from camps.models import Day
from . import models
+
+class SpeakerDetailView(DetailView):
+ model = models.Speaker
+ template_name = 'speaker_detail.html'
+
class SpeakerListView(ListView):
model = models.Speaker
template_name = 'speaker_list.html'