Skip to main content

Yet Another Static Page Django app.

Project description

===========
django-yasp
===========

.. image:: https://badge.fury.io/py/django-yasp.png
:target: https://badge.fury.io/py/django-yasp

.. image:: https://travis-ci.org/fgmacedo/django-yasp.png?branch=master
:target: https://travis-ci.org/fgmacedo/django-yasp

Another static page Django app.

Documentation
-------------

The full documentation is at https://django-yasp.readthedocs.org.

Quickstart
----------

Install django-yasp::

pip install django-yasp

Include it on INSTALLED_APPS::

'yasp',

Add to urls:

.. code-block:: python

url(r'^', include('yasp.urls', namespace='yasp')),

Add to middlewares:

.. code-block:: python

MIDDLEWARE_CLASSES = [
...
'yasp.middleware.StaticPageFallbackMiddleware',
]


Features
--------

Link to static pages
====================

Static pages in **yasp** are automatic routed to a slug that you specify when
creating your page. Your static pages can be grouped in a `Menu`_ object. So
your urls can be in the form `menu-slug/page-slug` or `page-slug` (pages
without a relation to `Menu`_.

To create a link to static pages, there are some useful templatetags, as follows.

.. note::

All menus/pages that are used in a templatetag will be automatically
created if they don't exist.


To load all pages inside a menu:

.. code-block:: django

{% load yasp %}

{% get_pages_from_menu 'about-us' as pages %}

<ul>
{% for page in pages %}
<li><a href="{{page.get_absolute_url}}">{{page.title}}</a></li>
{% endfor %}
</ul>


To get a specific page:

.. code-block:: django

{% load yasp %}

{% get_page 'about-us/vision' as page %} {# Page 'vision' related to a menu 'about-us' #}
<a href="{{page.get_absolute_url}}">{{page.title}}</a>

{% get_page 'contact' as page %} {# Page without a menu. #}
<a href="{{page.get_absolute_url}}">{{page.title}}</a>

To get a URL to a specific page:

.. code-block:: django

{% load yasp %}

<a href="{% get_page_url 'about-us/vision' %}">Our vision</a>


Custom templates
================

Static pages will be rendered using the `yasp/default.html` template by
default.

You can customize the template used to render a page by placing a template with
the same slug of the page, or directly on the `template` field on Admin.

Template path resolution order:

* The "Template" field of your page, if provided.
* 'yasp/{menu_slug}/{page_slug}.html'
* 'yasp/{}.html'.format(page_slug)
* 'yasp/default.html'


Context of a static page template:

:menu: The `Menu`_ object.
:content: The `FlatPage`_ object.
:object: Alias to `content`.


External link
=============

You can use a static page instance to link to an external page.

Example:

>>> from yasp.models import Menu, FlatPage
>>> menu = Menu.objects.create(name='About us', slug='about-us')
>>> page = FlatPage.objects.create(menu=menu, slug='google', link='http://google.com', title='Google')
>>> '<a href="{}">{}</a>'.format(page.get_absolute_url(), page.title)
'<a href="http://google.com">Google Inc.</a>'
>>> vision = FlatPage.objects.create(menu=menu, slug='vision', title='Vision')
>>> '<a href="{}">{}</a>'.format(vision.get_absolute_url(), vision.title)
'<a href="/about-us/vision">Vision</a>'

This construction is can be specially useful when you're build a navbar in
templates:

.. code-block:: django

{% load yasp %}
{% get_pages_from_menu 'about-us' as pages %}

<ul>
{% for page in pages %}
<li><a href="{{page.get_absolute_url}}">{{page.title}}</a></li>
{% endfor %}
</ul>


Will render as:

.. code-block:: html

<ul>
<li><a href="http://google.com">Google</a></li>
<li><a href="/about-us/vision">Vision</a></li>
</ul>



Running Tests
--------------

Does the code actually work?

::

source <YOURVIRTUALENV>/bin/activate
(myenv) $ pip install -r requirements_test.txt
(myenv) $ py.test




History
-------

0.1.0 (2016-09-26)
++++++++++++++++++

* First release on PyPI.

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-yasp-0.4.1.tar.gz (12.6 kB view hashes)

Uploaded Source

Built Distribution

django_yasp-0.4.1-py2.py3-none-any.whl (23.5 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