Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Namespace templates #168

Merged
merged 4 commits into from

2 participants

@poswald

This moves the templates into a djangorestframework directory and adds block tags so that the html can be customized.

Closes Issue #165

@tomchristie
Owner

I don't think base_renderer.html is really necessary. Customizers can just extend djangorestframework/renderer.html themselves.

Also other thought - since we're namespacing these now - let's have nicer (more concise) names.

templates/djangorestframework/api.html
templates/djangorestframework/api.txt
templates/djangorestframework/login.html

Otherwise, looks good. :)

@poswald

I don't think so actually... I'm following the same pattern as in django admin. When I tried doing just renderer.html I got a stack overflow as it was trying to extend itself.

Unless I have something wrong with the search order in my application or something...

@tomchristie
Owner

Ah, gotcha, yup.

Okay, so...

templates/djangorestframework/base.html
templates/djangorestframework/api.html
templates/djangorestframework/api.txt
templates/djangorestframework/login.html

@tomchristie tomchristie merged commit 2fea12c into tomchristie:master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
View
6 djangorestframework/renderers.py
@@ -373,7 +373,7 @@ class DocumentingHTMLRenderer(DocumentingTemplateRenderer):
media_type = 'text/html'
format = 'html'
- template = 'renderer.html'
+ template = 'djangorestframework/api.html'
class DocumentingXHTMLRenderer(DocumentingTemplateRenderer):
@@ -385,7 +385,7 @@ class DocumentingXHTMLRenderer(DocumentingTemplateRenderer):
media_type = 'application/xhtml+xml'
format = 'xhtml'
- template = 'renderer.html'
+ template = 'djangorestframework/api.html'
class DocumentingPlainTextRenderer(DocumentingTemplateRenderer):
@@ -397,7 +397,7 @@ class DocumentingPlainTextRenderer(DocumentingTemplateRenderer):
media_type = 'text/plain'
format = 'txt'
- template = 'renderer.txt'
+ template = 'djangorestframework/api.txt'
DEFAULT_RENDERERS = (
View
3  djangorestframework/templates/djangorestframework/api.html
@@ -0,0 +1,3 @@
+{% extends "djangorestframework/base.html" %}
+
+{# Override this template in your own templates directory to customize #}
View
0  djangorestframework/templates/renderer.txt → ...ork/templates/djangorestframework/api.txt
File renamed without changes
View
19 djangorestframework/templates/renderer.html → ...k/templates/djangorestframework/base.html
@@ -7,26 +7,34 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css" href='{% get_static_prefix %}djangorestframework/css/style.css'/>
- <title>Django REST framework - {{ name }}</title>
+ {% block extrastyle %}{% endblock %}
+ <title>{% block title %}Django REST framework - {{ name }}{% endblock %}</title>
+ {% block extrahead %}{% endblock %}
+ {% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
</head>
- <body>
+ <body class="{% block bodyclass %}{% endblock %}">
<div id="container">
<div id="header">
<div id="branding">
- <h1 id="site-name"><a href='http://django-rest-framework.org'>Django REST framework</a> <span class="version"> v {{ version }}</span></h1>
+ <h1 id="site-name">{% block branding %}<a href='http://django-rest-framework.org'>Django REST framework</a> <span class="version"> v {{ version }}</span>{% endblock %}</h1>
</div>
<div id="user-tools">
{% if user.is_active %}Welcome, {{ user }}.{% if logout_url %} <a href='{{ logout_url }}'>Log out</a>{% endif %}{% else %}Anonymous {% if login_url %}<a href='{{ login_url }}'>Log in</a>{% endif %}{% endif %}
+ {% block userlinks %}{% endblock %}
</div>
+ {% block nav-global %}{% endblock %}
</div>
<div class="breadcrumbs">
+ {% block breadcrumbs %}
{% for breadcrumb_name, breadcrumb_url in breadcrumblist %}
<a href="{{ breadcrumb_url }}">{{ breadcrumb_name }}</a> {% if not forloop.last %}&rsaquo;{% endif %}
{% endfor %}
+ {% endblock %}
</div>
+ <!-- Content -->
<div id="content" class="{% block coltype %}colM{% endblock %}">
{% if 'OPTIONS' in view.allowed_methods %}
@@ -123,7 +131,12 @@ <h1 id="site-name"><a href='http://django-rest-framework.org'>Django REST framew
{% endif %}
</div>
+ <!-- END content-main -->
+
</div>
+ <!-- END Content -->
+
+ {% block footer %}<div id="footer"></div>{% endblock %}
</div>
</body>
</html>
View
0  djangorestframework/templates/api_login.html → .../templates/djangorestframework/login.html
File renamed without changes
View
4 djangorestframework/utils/staticviews.py
@@ -12,7 +12,7 @@
# be making settings changes in order to accomodate django-rest-framework
@csrf_protect
@never_cache
-def api_login(request, template_name='api_login.html',
+def api_login(request, template_name='djangorestframework/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm):
"""Displays the login form and handles the login action."""
@@ -57,5 +57,5 @@ def api_login(request, template_name='api_login.html',
}, context_instance=RequestContext(request))
-def api_logout(request, next_page=None, template_name='api_login.html', redirect_field_name=REDIRECT_FIELD_NAME):
+def api_logout(request, next_page=None, template_name='djangorestframework/login.html', redirect_field_name=REDIRECT_FIELD_NAME):
return logout(request, next_page, template_name, redirect_field_name)
View
13 docs/howto/setup.rst
@@ -29,6 +29,19 @@ but once you move onto a production server, you'll want to make sure you serve t
* Ensure that the ``ADMIN_MEDIA_PREFIX`` is set appropriately and that you are serving the admin media.
(Django's testserver will automatically serve the admin media for you)
+You may customize the templates by creating a new template called ``djangorestframework/api.html``
+in your project, extend ``djangorestframework/base.html`` and override the
+appropriate ``{% block tags %}``. For example::
+
+ {% extends "djangorestframework/base.html" %}
+
+ {% block title %}My API{% endblock %}
+
+ {% block branding %}
+ <h1 id="site-name">My API</h1>
+ {% endblock %}
+
+
Markdown
--------
Something went wrong with that request. Please try again.