Skip to content

nephila/djangocms-rest-view

Repository files navigation

djangocms-rest-view

Latest PyPI version

Monthly downloads

Python versions

Latest Travis CI build status

Test coverage

Test coverage

Code Climate

An application to load django CMS pages in a client application.

djangocms-rest-view uses Django REST framework to serve django CMS pages through a REST API

Editing must still be done the "traditional" way

Installation

  • pip install djangocms-rest-view
  • Edit INSTALLED_APPS:

    INSTALLED_APPS = [
        ...
        'rest_framework',
        'djangocms_rest_view',
        ...
    ]
  • Edit urls.py:

    urlpatterns = [
        ...
        url(r'^api/', include('djangocms_rest_view.urls')),
        ...
    ]
  • That's all!

The REST view of the pages will be available at http://example.com/api/

Sample client

A sample Angular JS client is provided within the project.

To start exploring djangocms-rest view, you can install it and browse the website:

  • Edit INSTALLED_APPS:

    INSTALLED_APPS = [
        ...
        'djangocms_rest_view.client',
        ...
    ]
  • Edit urls.py:

    urlpatterns = [
        ...
        url(r'^rest/', include('djangocms_rest_view.client.urls')),
        ...
    ]

the Angular client will be available at http://example.com/rest/

example:

  • Copy dependencies in project bower.json
  • run bower:

    bower install

Customize

The sample client uses a dedicated base page to load all the default styles etc needed to render your content. Template is in rest/base.html copy it from djangocms_rest_view/client/templates/rest/base.html and edit it according your needs.

Templates

Each django CMS has a defined template to render.

You can customize the template the AngularJS client will use to render the page:

  • create a partial directory in the static directory
  • create html files for each page template
  • define the content of the rest-page template to render the placeholders and page title:

    <article class="body">
      <h2 ng-bind="content_page.title"></h2>
      <p ng-bind-html="content_page.placeholders.content | safe"></p>
    </article>

    content_page is the page serialization in the angular scope and contains the full serialization as visible at http://example.com/api/pages/<page-id>; thus content_page.placeholders.content contains the rendered HTML for the content placeholder.

Credits

Tools used in rendering this package: