Skip to main content

Front end editing for Django.

Project description



A front end editing app for Django. This app allows one to edit dynamic data on the front end of a website when logged in as a staff member. The app allows the editing of dynamic content within any element (See Example below).


You must have setuptools installed.

From PyPI:

pip install django_front_edit

Or download a package from the PyPI or the BitBucket page:

pip install <package>

Or unpack the package and:

python install.


Django >= 1.4 and its dependencies.

beautifulsoup4 >= 4.3.2 located at: or

django-classy-tags >= 0.5.1 located at: or

and either one of the following: (see FRONT_EDIT_HTML_PARSER setting below)

html5lib >= 0.999, != 0.9999, != 1.0b5, != 0.99999, != 1.0b6 located at: or

lxml located at: or


In your Django file insert the following in an appropriate place:

# for django >1.4 <1.8
# or for django >1.8
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'OPTIONS': {
            'context_processors': [



In your main file:

url(r'', include('front_edit.urls')),

There is nothing to syncdb or migrate.


This app uses template tags for all its functionality.

Template tags

Make sure to load up front_edit_tags in your template.


Arguments: object.field… [class_name]

object.field: This argument consist of multiple arguments of dot separated object/field variables. Currently only fields within the same model object can be edited per tag. class_name: This optional argument is the class name(s) to put on the form, edit button, and overlay in case you need to adjust them.

This tag specifies an editable region.


Arguments: None

This tag is used to make editable each object in a collection of pagelets each marked with EditHint tags.


Arguments: object fields [class_name]

object: A model instance. fields: A list of fields on this model, i.e. ‘field1,field2,…,fieldN’ class_name: This optional argument is the class name(s) to put on the form, edit button, and overlay in case you need to adjust them.

This tag adds a hint to a small cacheable template used in a pagelet system.


Arguments: None

This tag includes all the boilerplate to make the front-end editing work. This tag should always be right before the end <body> tag in your base template.


There is one command that you can call if you need to reposition the edit elements. You should call this if any JavaScript will change the offset of in-flow elements.



{% load front_edit_tags %}
<div class="pagelet pagelet-text" {% edit_hint instance "title,content" "class_name" %}>
    <div class="title">
        {{ instance.title }}
    <div class="richtext">
        {{ instance.content|safe }}

{% load front_edit_tags %}
<div class="pagelet pagelet-image" {% edit_hint instance "image,caption" "class_name" %}>
    <div class="image">
        <img src="{{ instance.image.url }}"/>
        <div class="caption">
            {{ instance.caption }}

{% load front_edit_tags pagelet_tags %}
<!DOCTYPE html>
        <!-- In a list -->
            {% for object in objects %}
            {% edit object.text_field object.char_field "class_name" %}
                <span>{{ object.text_field }}</span>
                <span>{{ object.char_field }}</span>
            {% endedit %}
            {% endfor %}
        <!-- In a table -->
                    {% for object in objects %}
                    {% edit object.text_field object.char_field "class_name" %}
                        <span>{{ object.text_field }}</span>
                        <span>{{ object.char_field }}</span>
                    {% endedit %}
                    {% endfor %}
    <!-- in a pagelet system -->
        {% edit_with_hints %}
        {% render_pagelets object.pagelets %}
        {% endedit_with_hints %}
        <!-- On a span -->
        {% edit object.text_field "class_name" %}
        <span>{{ object.text_field }}</span>
        {% endedit %{
    {% edit_loader %}



Settings can be set by using the individual settings or by specifying a dictionary as follows:



Default: []

A list of dot-separated paths to a custom model field such as a rich text field or file field that has a Media class on its widget.


Default: ‘__front_edit_defer’

The context key used to defer display of the collective editable loader templates.


Default: ‘front_edit/includes/editable.html’

This template is the editable. Which includes the form, edit button, and overlay.


Default: ‘html5lib’

Change the html parser used by beautifulsoup. By default we use ‘html5lib’, but we also support ‘lxml’. You will have to install either of those libraries. We do not support the builtin ‘html.parser’ library due to incompatibilities.


Default: True

Option to disable inline editing.


Default: ‘front_edit/js/jquery.min.js’

The path to the static jquery backup library if the CDN is down. The value is passed through the static tag.


Default: True

Whether or not to use the builtin jquery library or rely on the library already being present in the final document.


Default: ‘//’

The url to the CDN to use for jquery. The version and file name are appended. i.e. path/1.11.2/jquery.min.js


Default: ‘1.11.2’

The default version of jquery to fetch from the CDN.


Default: ‘front_edit/loader.html’

This template is the main boilerplate.


Default: ‘admin:logout’

Set the name of the logout url.


Default: ‘front_edit/includes/toolbar.html’

This template is the admin toolbar.


Default: False

Whether or not to activate the use of EditHint tags.


Default: None

A vigenere key used to obfuscate edit hints. Optional.

Custom Media and JS variables

If the FRONT_EDIT_CUSTOM_FIELDS setting doesn’t satisfy your needs you will need to do the following.

  1. Change FRONT_EDIT_LOADER_TEMPLATE to your own template, it should have a different name than ‘front_edit/loader.html’.

  2. In your template extend ‘front_edit/loader.html’.

  3. Use the block ‘ft_extra’ to set or run javascript code. No script tags are needed.

  4. Use the block ‘ft_extra_media’ to define media such as CSS or JS files.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-front-edit-1.2.1.tar.gz (61.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page