Skip to content
Wrapper around django-photologue, suited for handling remote images.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



django-metaimage is a GPL-licensed app for the Django web framework.
Many sites deal with images/photos, which usually come from three
sources: uploaded by a user, pulled from the Internet via a URL, or
generated server-side.  For the latter two cases, django-metaimage
should be helpful: a new instance can take either a remote image URL,
or raw image data as a string (e.g. as might be produced via

The main MetaImage model provides a wrapper of useful functionality
around ImageModel from the powerful django-photologue app (a
dependency).  Some of the django-metaimage code was initially inspired
from Pinax's photo app, but I have removed Pinax dependencies, so that
django-metaimage only requires:

1. Django 
2. django-photologue
3. django-autoslug
4. django-taggit
5. django-uni-form, trunk (optional)

You might need django-uni-form, if you want to use the included
example templates, and want to see all django-metaimage's tests pass.

In sum, this app is provides more flexibility with local
representation of images on your site from multiple sources, whether
uploaded, from remote images, or sever-side generated images.


The main class, MetaImage, enables storing useful metadata about
images, including a title, caption, notes about the source
(e.g. copyrights, permissions), and tags.  MetaImage attributes

- title, slug, caption, source_note (for attribution text, copyrights, etc.)
- source_url (if any)
- privacy 
- safetylevel
- tags

Now, to handle the two cases of storing images that the app was made
for: retrieval of a remote image from its URL (you'll have a local
copy in case the image moves/disappears), or storing a server-side
generated image:

- With a remote image, simply specify the source_url field in the new
  MetaImage instance and save it, e.g.


    new_metaimage = MetaImage(
        title='Django logo',
        source_note='The logo of the Django project.',
        creator=foo_user)  # Will download, save source_url locally.

- With a server-side generated image - as a string object - one would
  send in the keyword argument image_data when saving, e.g.


    new_metaimage = MetaImage(
        title='Chart of f(x)',
        source_note='Chart of f(x) generated by Matplotlib.',

Useful MetaImage methods include:

- render() and render_linked(), which spits out the HTML to show your
  image on a webpage, with a hyperlink to a details-page.

Basic views, tests, and templates are also provided, so you can
quickly integrate the app into an existing Django site.


Install via "pip install django-metaimage" or from source. You may
also need to do pip install for django-taggit, django-autoslug, and

Then update your Django project's file: add "photologue",
"taggit" and "metaimage" (autoslug does not need to be there) in the



And then, do a " syncdb" to create the database tables

OPTIONAL: Templates are provided for adding, editing, viewing, etc. of
metaimages; they're very basic and meant only as a starting point.
But if you want to use them directly, do at least these two things:

1. Get and install django-uni-form > 0.7.0 which some of the templates
   rely on, and also update your INSTALLED_APPS to list
   "uni_form" as a package dependency.
2. Update your site-wide, e.g.


    urlpatterns = patterns("",
        (r"^metaimage/", include("metaimage.urls")),

Also, many of the django-metaimage templates have templatetags
dependencies that are commented out, as they require Pinax or other
packages; you can activate them as needed, but be sure to update your
INSTALLED_APPS accordingly.


I've included a set of unit tests for the app; if you have integrated
django-metaimage into an existing Django site/project, just do the
usual " test" and the tests should be run, BUT for all tests
to pass, the current trunk (as of 2/2011) of django-uni-form is

Should you want to run django-metaimage's test suite outside of any
particular Django site/project - i.e. stand-alone Django app testing -
I suggest installing and using the django-app-test-runner and my fork
of it at:

...which enables usage of a testing-specific settings file.  After you
install django-app-test-runner in your virtualenv (don't develop in
Python without it!) you should be able to do something like:


    cd to/where/django-metaimage/code/is
    app-test-runner ./src/metaimage/ -s src/metaimage/

Note that you'll need Internet connectivity for the tests to pass.

Errors, etc.

Please log errors/issues using django-metaimage's github site,

Something went wrong with that request. Please try again.