title: "Internal Server Error" deploying Django app to Heroku
body: <p>I have a Django app that I'm trying to deploy to Heroku. I've followed the Heroku documentation closely with no real issues. However, after pushing to Heroku, I'm seeing an "internal server error" when I visit the app online. I'm not seeing any obvious errors in the Terminal (below). This is my first time using Heroku so there is probably a rookie mistake somewhere. Help is appreciated. </p>
  
  <pre><code>(venv)suraj-kapoors-computer:listing surajkapoor$ 
  (venv)suraj-kapoors-computer:listing surajkapoor$ 
  (venv)suraj-kapoors-computer:listing surajkapoor$ pip freeze &gt; requirements.txt
  (venv)suraj-kapoors-computer:listing surajkapoor$ venv
  -bash: venv: command not found
  (venv)suraj-kapoors-computer:listing surajkapoor$ git init
  Initialized empty Git repository in /Users/surajkapoor/Desktop/listing/.git/
  (venv)suraj-kapoors-computer:listing surajkapoor$ git add .
  (venv)suraj-kapoors-computer:listing surajkapoor$ git commit -m "listings"
  [master (root-commit) 62e03eb] listings
   38 files changed, 939 insertions(+), 0 deletions(-)
   create mode 100644 .gitignore
   create mode 100644 Procfile
   create mode 100644 listing/__init__.py
   create mode 100644 listing/settings.py
   create mode 100644 listing/urls.py
   create mode 100644 listing/wsgi.py
   create mode 100644 manage.py
   create mode 100644 noticeboard/__init__.py
   create mode 100644 noticeboard/admin.py
   create mode 100644 noticeboard/media/images/717c798f-8c99-4bd2-b78d-59959b219aa1-620x372.jpeg
   create mode 100644 noticeboard/media/images/717c798f-8c99-4bd2-b78d-59959b219aa1-620x372_1.jpeg
   create mode 100644 noticeboard/media/images/717c798f-8c99-4bd2-b78d-59959b219aa1-620x372_2.jpeg
   create mode 100644 noticeboard/media/images/images-1.jpeg
   create mode 100644 noticeboard/media/images/images-2.jpeg
   create mode 100644 noticeboard/media/images/images.jpeg
   create mode 100644 noticeboard/media/images/images_1.jpeg
   create mode 100644 noticeboard/media/images/imgres-1.jpeg
   create mode 100644 noticeboard/media/images/imgres-2.jpeg
   create mode 100644 noticeboard/media/images/imgres.jpeg
   create mode 100644 noticeboard/media/images/imgres_1.jpeg
   create mode 100644 noticeboard/media/images/imgres_2.jpeg
   create mode 100644 noticeboard/media/images/imgres_3.jpeg
   create mode 100644 noticeboard/media/images/imgres_4.jpeg
   create mode 100644 noticeboard/migrations/0001_initial.py
   create mode 100644 noticeboard/migrations/0002_auto__add_field_listings_image.py
   create mode 100644 noticeboard/migrations/0003_auto__add_gallery__chg_field_listings_image__add_index_listings_image.py
   create mode 100644 noticeboard/migrations/0004_auto__del_gallery__del_field_listings_image__add_field_listings_image1.py
   create mode 100644 noticeboard/migrations/__init__.py
   create mode 100644 noticeboard/models.py
   create mode 100644 noticeboard/static/noticeboard/button.jpg
   create mode 100644 noticeboard/static/noticeboard/left-scroll.jpg
   create mode 100644 noticeboard/static/noticeboard/main.css
   create mode 100644 noticeboard/static/noticeboard/main.js
   create mode 100644 noticeboard/static/noticeboard/right-scroll.jpg
   create mode 100644 noticeboard/templates/listings/index.html
   create mode 100644 noticeboard/templates/listings/listings_detail.html
   create mode 100644 noticeboard/tests.py
   create mode 100644 noticeboard/urls.py
   create mode 100644 noticeboard/views.py
   create mode 100644 os.path.join(BASE_DIR, 'db.sqlite3')
   create mode 100644 requirements.txt
  (venv)suraj-kapoors-computer:listing surajkapoor$ heroku create
  /Users/surajkapoor/.heroku/client/lib/heroku/updater.rb:164: warning: Insecure world writable dir /Users/surajkapoor/Desktop/listing in PATH, mode 040777
  Creating thawing-wildwood-4650... done, stack is cedar
  http://thawing-wildwood-4650.herokuapp.com/ | git@heroku.com:thawing-wildwood-4650.git
  Git remote heroku added
  (venv)suraj-kapoors-computer:listing surajkapoor$ git push heroku master
  Warning: Permanently added the RSA host key for IP address '50.19.85.156' to the list of known hosts.
  Counting objects: 45, done.
  Delta compression using up to 8 threads.
  Compressing objects: 100% (39/39), done.
  Writing objects: 100% (45/45), 195.76 KiB | 53 KiB/s, done.
  Total 45 (delta 6), reused 0 (delta 0)
  
  -----&gt; Python app detected
  -----&gt; No runtime.txt provided; assuming python-2.7.4.
  -----&gt; Preparing Python runtime (python-2.7.4)
  -----&gt; Installing Distribute (0.6.36)
  -----&gt; Installing Pip (1.3.1)
  -----&gt; Installing dependencies using Pip (1.3.1)
         Downloading/unpacking Django==1.5.1 (from -r requirements.txt (line 1))
           Running setup.py egg_info for package Django
  
         Downloading/unpacking distribute==0.6.34 (from -r requirements.txt (line 2))
           Running setup.py egg_info for package distribute
  
         Downloading/unpacking dj-database-url==0.2.1 (from -r requirements.txt (line 3))
           Downloading dj-database-url-0.2.1.tar.gz
           Running setup.py egg_info for package dj-database-url
  
         Downloading/unpacking django-toolbelt==0.0.1 (from -r requirements.txt (line 4))
           Downloading django-toolbelt-0.0.1.tar.gz
           Running setup.py egg_info for package django-toolbelt
  
         Downloading/unpacking gunicorn==17.5 (from -r requirements.txt (line 5))
           Running setup.py egg_info for package gunicorn
  
         Downloading/unpacking psycopg2 (from django-toolbelt==0.0.1-&gt;-r requirements.txt (line 4))
           Running setup.py egg_info for package psycopg2
  
         Downloading/unpacking dj-static (from django-toolbelt==0.0.1-&gt;-r requirements.txt (line 4))
           Downloading dj-static-0.0.5.tar.gz
           Running setup.py egg_info for package dj-static
  
         Downloading/unpacking static (from dj-static-&gt;django-toolbelt==0.0.1-&gt;-r requirements.txt (line 4))
           Downloading static-0.4.tar.gz
           Running setup.py egg_info for package static
  
         Installing collected packages: Django, distribute, dj-database-url, django-toolbelt, gunicorn, psycopg2, dj-static, static
           Running setup.py install for Django
             changing mode of build/scripts-2.7/django-admin.py from 600 to 755
  
             changing mode of /app/.heroku/python/bin/django-admin.py to 755
           Found existing installation: distribute 0.6.36
             Uninstalling distribute:
               Successfully uninstalled distribute
           Running setup.py install for distribute
             Before install bootstrap.
             Scanning installed packages
             Setuptools installation detected at /app/.heroku/python/lib/python2.7/site-packages
             Non-egg installation
             Moving elements out of the way...
             Already patched.
             /app/.heroku/python/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info already patched.
  
             Installing easy_install script to /app/.heroku/python/bin
             Installing easy_install-2.7 script to /app/.heroku/python/bin
             After install bootstrap.
             /app/.heroku/python/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info already exists
           Running setup.py install for dj-database-url
  
           Running setup.py install for django-toolbelt
  
           Running setup.py install for gunicorn
  
             Installing gunicorn_paster script to /app/.heroku/python/bin
             Installing gunicorn script to /app/.heroku/python/bin
             Installing gunicorn_django script to /app/.heroku/python/bin
           Running setup.py install for psycopg2
             building 'psycopg2._psycopg' extension
             gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -
  
           Running setup.py install for dj-static
  
           Running setup.py install for static
  
             Installing static script to /app/.heroku/python/bin
         Successfully installed Django distribute dj-database-url django-toolbelt gunicorn psycopg2 dj-static static
         Cleaning up...
  
  -----&gt; Discovering process types
         Procfile declares types -&gt; web
  
  -----&gt; Compiled slug size: 30.2MB
  -----&gt; Launching... done, v3
         http://thawing-wildwood-4650.herokuapp.com deployed to Heroku
  
  To git@heroku.com:thawing-wildwood-4650.git
   * [new branch]      master -&gt; master
  (venv)suraj-kapoors-computer:listing surajkapoor$ heroku ps:scale web=1
  /Users/surajkapoor/.heroku/client/lib/heroku/helpers.rb:103: warning: Insecure world writable dir /Users/surajkapoor/Desktop/listing in PATH, mode 040777
  Scaling web dynos... done, now running 1
  (venv)suraj-kapoors-computer:listing surajkapoor$ heroku ps
  /Users/surajkapoor/.heroku/client/lib/heroku/helpers.rb:103: warning: Insecure world writable dir /Users/surajkapoor/Desktop/listing in PATH, mode 040777
  === web (1X): `gunicorn listing.wsgi`
  web.1: up 2013/07/23 15:49:12 (~ 1m ago)
  
  (venv)suraj-kapoors-computer:listing surajkapoor$ heroku open
  /Users/surajkapoor/.heroku/client/lib/heroku/helpers.rb:103: warning: Insecure world writable dir /Users/surajkapoor/Desktop/listing in PATH, mode 040777
  Opening thawing-wildwood-4650... done
  (venv)suraj-kapoors-computer:listing surajkapoor$  
  </code></pre>
  
  <p>Heroku Logs show the following:</p>
  
  <pre><code>2013-07-23T17:16:01.137746+00:00 app[web.1]:     return node.render(context)
  2013-07-23T17:16:01.138196+00:00 app[web.1]:     pieces.append(force_text(getattr(self, piece)()))
  2013-07-23T17:16:01.138196+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/encoding.py", line 99, in force_text
  2013-07-23T17:16:01.138196+00:00 app[web.1]:     s = s.__unicode__()
  2013-07-23T17:16:01.138433+00:00 app[web.1]:     default_translation = _fetch(settings.LANGUAGE_CODE)
  2013-07-23T17:16:01.138433+00:00 app[web.1]:     return _trans.ugettext(message)
  2013-07-23T17:16:01.138433+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in ugettext
  2013-07-23T17:16:01.138433+00:00 app[web.1]:     return do_translate(message, 'ugettext')
  2013-07-23T17:16:01.138433+00:00 app[web.1]:     return func(*self.__args, **self.__kw)
  2013-07-23T17:16:01.138433+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/functional.py", line 130, in __text_cast
  2013-07-23T17:16:01.138433+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 258, in do_translate
  2013-07-23T17:16:01.138433+00:00 app[web.1]:     _default = translation(settings.LANGUAGE_CODE)
  2013-07-23T17:16:01.138433+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 172, in translation
  2013-07-23T17:16:01.138433+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 71, in ugettext
  2013-07-23T17:16:01.138882+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 154, in _fetch
  2013-07-23T17:16:01.138882+00:00 app[web.1]:     app = import_module(appname)
  2013-07-23T17:16:01.138882+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
  2013-07-23T17:16:01.138882+00:00 app[web.1]:     __import__(name)
  2013-07-23T17:16:01.138882+00:00 app[web.1]: ImportError: No module named south
  2013-07-23T17:16:01.445966+00:00 app[web.1]:     response = middleware_method(request)
  2013-07-23T17:16:01.445966+00:00 app[web.1]: Internal Server Error: /favicon.ico
  2013-07-23T17:16:01.445966+00:00 app[web.1]: Traceback (most recent call last):
  2013-07-23T17:16:01.445966+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 92, in get_response
  2013-07-23T17:16:01.445966+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/middleware/common.py", line 69, in process_request
  2013-07-23T17:16:01.445966+00:00 app[web.1]:     if (not urlresolvers.is_valid_path(request.path_info, urlconf) and
  2013-07-23T17:16:01.445966+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/urlresolvers.py", line 551, in is_valid_path
  2013-07-23T17:16:01.445966+00:00 app[web.1]:     resolve(path, urlconf)
  2013-07-23T17:16:01.445966+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/urlresolvers.py", line 440, in resolve
  2013-07-23T17:16:01.445966+00:00 app[web.1]:     return get_resolver(urlconf).resolve(path)
  2013-07-23T17:16:01.446344+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/urlresolvers.py", line 319, in resolve
  2013-07-23T17:16:01.446344+00:00 app[web.1]:     for pattern in self.url_patterns:
  2013-07-23T17:16:01.446344+00:00 app[web.1]:     patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  2013-07-23T17:16:01.446344+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/urlresolvers.py", line 342, in urlconf_module
  2013-07-23T17:16:01.446344+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/urlresolvers.py", line 347, in url_patterns
  2013-07-23T17:16:01.446691+00:00 app[web.1]:   File "/app/noticeboard/models.py", line 2, in &lt;module&gt;
  2013-07-23T17:16:01.446691+00:00 app[web.1]:     from django_extensions.db.fields import AutoSlugField
  2013-07-23T17:16:01.446344+00:00 app[web.1]:     self._urlconf_module = import_module(self.urlconf_name)
  2013-07-23T17:16:01.446344+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
  2013-07-23T17:16:01.446344+00:00 app[web.1]:     __import__(name)
  2013-07-23T17:16:01.446344+00:00 app[web.1]:   File "/app/listing/urls.py", line 3, in &lt;module&gt;
  2013-07-23T17:16:01.446344+00:00 app[web.1]:     from noticeboard import views
  2013-07-23T17:16:01.446691+00:00 app[web.1]:   File "/app/noticeboard/views.py", line 2, in &lt;module&gt;
  2013-07-23T17:16:01.446691+00:00 app[web.1]:     from noticeboard.models import Listings
  2013-07-23T17:16:01.446691+00:00 app[web.1]: ImportError: No module named django_extensions.db.fields
  2013-07-23T17:16:01.611717+00:00 app[web.1]: Traceback (most recent call last):
  2013-07-23T17:16:01.615024+00:00 heroku[router]: at=info method=GET path=/favicon.ico host=thawing-wildwood-4650.herokuapp.com fwd="79.121.160.251" dyno=web.1 connect=3ms service=175ms status=500 bytes=135
  2013-07-23T17:16:01.611717+00:00 app[web.1]: 2013-07-23 12:16:01 [7] [ERROR] Error handling request
  2013-07-23T17:16:01.611717+00:00 app[web.1]:     respiter = self.wsgi(environ, resp.start_response)
  2013-07-23T17:16:01.611963+00:00 app[web.1]:     return debug.technical_500_response(request, *exc_info)
  2013-07-23T17:16:01.611963+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/views/debug.py", line 69, in technical_500_response
  2013-07-23T17:16:01.611963+00:00 app[web.1]:     html = reporter.get_traceback_html()
  2013-07-23T17:16:01.611963+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/views/debug.py", line 298, in get_traceback_html
  2013-07-23T17:16:01.611717+00:00 app[web.1]:     return self.application(environ, start_response)
  2013-07-23T17:16:01.611717+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/dj_static.py", line 59, in __call__
  2013-07-23T17:16:01.611717+00:00 app[web.1]:     response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  2013-07-23T17:16:01.611717+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 255, in __call__
  2013-07-23T17:16:01.611717+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 178, in get_response
  2013-07-23T17:16:01.611717+00:00 app[web.1]:     response = self.get_response(request)
  2013-07-23T17:16:01.611963+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py", line 217, in handle_uncaught_exception
  2013-07-23T17:16:01.611717+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 126, in handle_request
  2013-07-23T17:16:01.612261+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/debug.py", line 74, in render_node
  2013-07-23T17:16:01.611963+00:00 app[web.1]:     return t.render(c)
  2013-07-23T17:16:01.611963+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/base.py", line 140, in render
  2013-07-23T17:16:01.611963+00:00 app[web.1]:     return self._render(context)
  2013-07-23T17:16:01.611963+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/base.py", line 134, in _render
  2013-07-23T17:16:01.612261+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/base.py", line 830, in render
  2013-07-23T17:16:01.612261+00:00 app[web.1]:     bit = self.render_node(node, context)
  2013-07-23T17:16:01.611963+00:00 app[web.1]:     return self.nodelist.render(context)
  2013-07-23T17:16:01.612261+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/defaultfilters.py", line 715, in date
  2013-07-23T17:16:01.612261+00:00 app[web.1]:     return format(value, arg)
  2013-07-23T17:16:01.612987+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/dateformat.py", line 312, in format
  2013-07-23T17:16:01.612261+00:00 app[web.1]:     return node.render(context)
  2013-07-23T17:16:01.612261+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/debug.py", line 84, in render
  2013-07-23T17:16:01.612987+00:00 app[web.1]:     pieces.append(force_text(getattr(self, piece)()))
  2013-07-23T17:16:01.612987+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/dateformat.py", line 216, in r
  2013-07-23T17:16:01.612987+00:00 app[web.1]:     return self.format('D, j M Y H:i:s O')
  2013-07-23T17:16:01.612261+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/template/base.py", line 606, in resolve
  2013-07-23T17:16:01.612261+00:00 app[web.1]:     new_obj = func(obj, *arg_vals)
  2013-07-23T17:16:01.612987+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/encoding.py", line 99, in force_text
  2013-07-23T17:16:01.613230+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/__init__.py", line 71, in ugettext
  2013-07-23T17:16:01.613230+00:00 app[web.1]:     return _trans.ugettext(message)
  2013-07-23T17:16:01.613230+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 276, in ugettext
  2013-07-23T17:16:01.613230+00:00 app[web.1]:     return do_translate(message, 'ugettext')
  2013-07-23T17:16:01.612987+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/dateformat.py", line 35, in format
  2013-07-23T17:16:01.612987+00:00 app[web.1]:     return df.format(format_string)
  2013-07-23T17:16:01.612987+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/dateformat.py", line 35, in format
  2013-07-23T17:16:01.612987+00:00 app[web.1]:     pieces.append(force_text(getattr(self, piece)()))
  2013-07-23T17:16:01.612987+00:00 app[web.1]:     s = s.__unicode__()
  2013-07-23T17:16:01.613230+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/functional.py", line 130, in __text_cast
  2013-07-23T17:16:01.613230+00:00 app[web.1]:     return func(*self.__args, **self.__kw)
  2013-07-23T17:16:01.613230+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 258, in do_translate
  2013-07-23T17:16:01.613230+00:00 app[web.1]:     _default = translation(settings.LANGUAGE_CODE)
  2013-07-23T17:16:01.613230+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 172, in translation
  2013-07-23T17:16:01.613230+00:00 app[web.1]:     default_translation = _fetch(settings.LANGUAGE_CODE)
  2013-07-23T17:16:01.613573+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/translation/trans_real.py", line 154, in _fetch
  2013-07-23T17:16:01.613573+00:00 app[web.1]:     app = import_module(appname)
  2013-07-23T17:16:01.613573+00:00 app[web.1]:   File "/app/.heroku/python/lib/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
  2013-07-23T17:16:01.613573+00:00 app[web.1]:     __import__(name)
  2013-07-23T17:16:01.613573+00:00 app[web.1]: ImportError: No module named south
  2013-07-23T17:16:01.612261+00:00 app[web.1]:     output = self.filter_expression.resolve(context)
  2013-07-23T17:16:01.142419+00:00 heroku[router]: at=info method=GET path=/ host=thawing-wildwood-4650.herokuapp.com fwd="79.121.160.251" dyno=web.1 connect=2ms service=246ms status=500 bytes=135
  (venv)suraj-kapoors-computer:listing surajkapoor$ 
  </code></pre>