You need to add your admin URL before the URL patterns of the admin itself:
urlpatterns = patterns('',
url(r'^admin/preferences/$', TemplateView.as_view(template_name="admin/preferences/preferences.html")),
url(r'^admin/', include('django.contrib.admin.urls')),
)
This way the URL won’t be processed by Django’s admin.