<!--
In your base.html (or whatever base template you are using in your project)
have the following template code, and in your view functions, supply a
model_obj context variable that refers to the primary model object of that
view so base.html will know which model/model object to refer to.
-->

{% if request.user.is_staff %}
<div id="admin-toolbar">
    {% if model_obj %}
    <a href="{{ model_obj.get_admin_change_url }}">Edit</a> |
    <a href="{{ model_obj.get_admin_delete_url }}">Delete</a> |
    <a href="{{ model_obj.get_admin_history_url }}">History</a> |
    <a href="{{ model_obj.get_admin_add_url }}">Add another {{ model_obj.get_verbose_name }}</a> |
    <a href="{{ model_obj.get_admin_changelist_url }}">Manage {{ model_obj.get_verbose_name_plural }}</a>
    {% endif %}
</div>
{% endif %}


<!--
# In your Python code, you need:

from django.db import models
from django.core.urlresolvers import reverse

models.Model._admin_url_name = lambda self, type: 'admin:%s_%s_%s' % (
    self._meta.app_label, self._meta.module_name, type)

def get_admin_change_url(self):
    return reverse(self._admin_url_name('change'), args=(self.pk, ))
models.Model.get_admin_change_url = get_admin_change_url

def get_admin_delete_url(self):
    return reverse(self._admin_url_name('delete'), args=(self.pk, ))
models.Model.get_admin_delete_url = get_admin_delete_url

def get_admin_history_url(self):
    return reverse(self._admin_url_name('history'), args=(self.pk, ))
models.Model.get_admin_history_url = get_admin_history_url

def get_admin_changelist_url(self):
    return reverse(self._admin_url_name('changelist'))
models.Model.get_admin_changelist_url = get_admin_changelist_url

def get_admin_add_url(self):
    return reverse(self._admin_url_name('add'))
models.Model.get_admin_add_url = get_admin_add_url

models.Model.get_verbose_name = lambda self: self._meta.verbose_name
models.Model.get_verbose_name_plural = lambda self: self._meta.verbose_name_plural
-->