Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

Show panoramic photos in django

Project Description


Integration of jQuery virtual tour in Django.

One model stores panoramic photo while a number of other models represents clickable areas in the panorama. There are currently three types of clickable areas:

Panorama Link
Link to another panorama, to allow virtual tour navigation.
Show a ajax popup with HTML block (using tinymce)
External link
Display another url in a iframe.


  • Install django-panorama egg with pip, buildout, or whatever.
  • Add ‘panorama’ to your INSTALLED_APPS
  • Add panorama urls to your project urls: (r'^panoramas/', include('panorama.urls')),
  • Run syncdb
  • Overwrite panoramas default template: templates/panorama/base.html

This app uses django-multilingual-ng and django-tinymce. They must be installed and configured for this app to work.


If you are upgrading from 1.1 or before, database migration is required.

Django-panorama uses South to keep in sync database and models, so it’s recommended to add ‘south’ to your INSTALLED_APPS.


No required configuration. There are some optional configuration parameters to control behaviour of panorama display. You can place the following variables in your project’s


Width of the panorama window

Value: width in pixels. Default: 600


Speed of the panorama rotation.

Value: number; higher values means slower :-P Default: 20000


Starting direction of the rotation.

Value: [‘left’,’right’] Default: ‘left’


Display rotation controls?

Value: [‘auto’, ‘yes’, ‘no’] Default: ‘auto’


Starting position of the panorama.

Value: position in pixels. Default: 0


Start rotation automatically?

Value: True, False Default: False


Loop over the panorama?

Value: True, False Default: True


To show a panorama model in templates:

{% load panorama %}
{% show_panorama panorama_object %}


This app needs the following javascript libraries loaded: jquery, jquery.panorama, jquery.fancybox and jquery.advanced-panorama. All are bundled with this app; to load the first three you can use the panorama_js templatetag:

{% panorama_js %}

jquery.advanced-panorama case is different, it’s loaded automatically and resides in /static/panorama/js/jquery.advanced-panorama.js.

Admin interface uses OpenLayers, also bundled with this app. Can be found in /static/panorama/js/OpenLayers.js.


Sample css and media is provided. Load with:

<link rel="stylesheet" href="{{STATIC_URL}}panorama/jquery.panorama.css" />
<link rel="stylesheet" href="{{STATIC_URL}}panorama/jquery.fancybox-1.3.4.css" />


Configuration options can be overwritten through context. For example:

{% with position=800 viewport_width=400 %}
    {% show_panorama panorama_object %}
{% endwith %}


0.1 - Unreleased

  • Initial release.
  • Basic Support for panoramic images.
  • Templatetag to display image.

1.0 - 2011/01/20

  • Upgraded to django 1.3
  • Add suport for jquery virtual tour, a enhancement of jquery.panorama.
  • Support for notes and external links through jquery virtual tour.
  • Renamed from gisa.panorama to django-panorama.
  • Dropped namespace package gisa.
  • Added some tests.
  • Use generic views.
  • Simplify urls.
  • Improved templates.
  • Migrated from multilingual to multilingual-ng.
  • Add some documentation.

1.1 - 2011/01/20

  • Fix fixtures and tests.
  • Renamed templatetags panorama -> panoramas to avoid conflict.
  • Code cosmetics, docstrings.

1.2 - 2011/01/30

  • Add Link model to allow navigation between panoramas.
  • Migrate to South.
  • Renamed PanoramaExternalLink and PanoramaNote to ExternalLink and Note.
  • Add options to to control default behavior of panorama display.
  • Add fields to Panorama model to allow overwriting default options.
  • Allow overwriting options in show_panorama templatetag.

Release History

This version
History Node


History Node


History Node


Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, Size & Hash SHA256 Hash Help File Type Python Version Upload Date
(244.0 kB) Copy SHA256 Hash SHA256
Source None Jan 30, 2011

Supported By

Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Google Google Cloud Servers