An artist's portfolio as a pluggable Django app, based on the following assumptions:
- A portfolio consists of collections containing artworks.
- Artworks have one or more pictures and (optionally) a title and a description.
- Artworks can be listed from within collections or categories.
- Well tested, decent code coverage and used in production environments.
- Makes good use of Django's admin; drag and drop sorting, search, filtering, pagination and thumbnail previews.
- All strings are fully translatable (will integrate with Transifex on request, feel free to create a GitHub issue).
- Optional template context processors and sitemaps available.
- Very basic front-end templates to help kickstart integration.
- South migrations available for hassle-free upgrade paths.
- Mathijs de Bruin (author)
- Evgeny Demchenko
pip install -e https://github.com/dokterbob/django-portfolio.git#egg=django-portfolio
Add portfolio to INSTALLED_APPS.
Include URL's into Django's URL space, like such:
urlpatterns = patterns('', (r'^portfolio/', include('portfolio.urls')), ... )
Have a cup of coffee! You deserve one; basic integration of the portfolio app is done now.
Copy the minimal base templates from the templates folder to your project's template folder and start customizing.
(Optionally) Configure sitemaps by updating your sitemaps dictionary with portfolio.sitemaps.portfolio_sitemaps.
For example:
from portfolio.sitemaps import portfolio_sitemaps sitemaps = { 'blog': GenericSitemap(info_dict, priority=0.6), } sitemaps.update(portfolio_sitemaps) ... urlpatterns = patterns('', (r'^portfolio/', include('portfolio.urls')), # Sitemaps (r'^sitemap\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), )
(Optionally) Enable template context processors for collections, artworks and/or categories in settings.py:
TEMPLATE_CONTEXT_PROCESSORS = ( ... 'portfolio.context_processors.collections', 'portfolio.context_processors.artworks' 'portfolio.context_processors.categories' )
(Optionally) Install and configure your preferred rich text widget:
INSTALLED_APPS = ( ... # Imperavi (or tinymce) rich text editor is optional 'imperavi', )
Known to work are django-imperavi as well as django-tinymce . Be sure to follow installation instructions for respective editors.
Returns a list of artworks optionally filtered by category/collection (with offset/limit).
Arguments: * collection - (optional) Collection object, id or slug to filter artworks by collection * category - (optional) Category object, id or slug to filter artworks by category * offset - (optional) Offset for objects list (default: 0) * limit - (optional) Limit for objects list (default: 10000)
Usage example:
{% load portfolio_tags %} {% artworks collection="featured" as artwork_list %}
Returns a list of collections (with offset/limit).
Arguments: * offset - (optional) Offset for objects list (default: 0) * limit - (optional) Limit for objects list (default: 10000)
Usage example:
{% load portfolio_tags %} {% collections as collection_list%}
Returns a list of categories (with offset/limit).
Arguments: * offset - (optional) Offset for objects list (default: 0) * limit - (optional) Limit for objects list (default: 10000)
Usage example:
{% load portfolio_tags %} {% categories as category_list %}