Skip to main content

A library to load data from database to template

Project description

Django Template Data

Why?

You are working on a Django project and you want a way to update some strings or blocks without using a bare CMS or a WYSIWYG. Then this small module is for you. It does what you expect, load datas from database and send them via the context to the templates.

Installation

$ pip install django-template-data

Usage

Add 'template_data' in INSTALLED_APPS

INSTALLED_APPS = [
    ...,
    'template_data',
    ...,
]

Then add load_data() to templates context processors

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'debug': True,
            'context_processors': [
                ...,
                'template_data.processors.load_data',
            ],
        },
    },
]

Finally migrate

$ python manage.py migrate

Tutorial

Let say you want a dynamic title, loaded from the database. First create a base template like this:

{% load i18n %}
<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="shortcut icon" href="/static/front/img/favicon.png" type="image/x-icon">
    {% block full_title %}<title>{% block title %}{{ title }}{% endblock %} - Sitename</title>{% endblock %}

...

Go to your Django admin to manage TemplateData model. Create two rows, with these values:
key = "title", page = "index", value = "Home"
key = "title", page = "signin", value = "Login in your account"
As you can imagine the title of the index page will be "Home - Sitename" and for the signin page will be "Login in your account - Sitename"

You surely noticed how we appended "- Sitename" to the title in the template. We can do the same by using the inheriting feature.
First we define this template:

{% load i18n %}
<!doctype html>
<html lang="en">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="shortcut icon" href="/static/front/img/favicon.png" type="image/x-icon">
    <title>{% block title %}{{ title }}{% endblock %}</title>

...

Then create three rows of TemplateData with these values:
key = "title", page = "global", value = "Sitename"
key = "title", page = "index", inheriting_page = "global", value = "Home - {{ super }}"
key = "title", page = "signin", inheriting_page = "global", value = "Login in your account - {{ super }}"
You will have the same result.

Contributing

Contributions are welcome. It is FOSS!

License

Feel free to use it as you want.

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-template-data-0.0.3.tar.gz (5.6 kB view hashes)

Uploaded Source

Built Distribution

django_template_data-0.0.3-py2.py3-none-any.whl (6.3 kB view hashes)

Uploaded Python 2 Python 3

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