Contents 
  
  
Django
Installation
- 
     Open Web Platform Installer and install "Python project":
   
-  Follow steps in "Creating Django project":
  
  
  
Deployment
To deploy Python Django application you will need to install Python Hosting Package on a target server. Then just copy IIS web site from one machine to another.
web.config example
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>
  <heliconZoo>
   <application name="python.project" >
    <environmentVariables>
     <add name="VIRTUAL_ENV" value="%APPL_PHYSICAL_PATH%\venv" />
     <add name="PATH" value="%APPL_PHYSICAL_PATH%\venv\Scripts;%PATH%" />
     <add name="PYTHONPATH" value="%APPL_PHYSICAL_PATH%\venv\lib\site-packages;
     %APPL_PHYSICAL_PATH%\venv\lib;%APPL_PHYSICAL_PATH%;%APPL_PHYSICAL_PATH%\project" />
     <!-- generic wsgi app -->
     <!-- <add name="WSGI_APP" value="welcome.application" />  -->
     <!-- django project -->
     <add name="DJANGO_SETTINGS_MODULE" value="project.settings" />
     <!-- tornado app -->
     <!-- <add name="APP_WORKER" value="%APPL_PHYSICAL_PATH%\server.py" /> -->
     <!-- web console -->
     <!-- security rules for console are placed in /console/web.config -->
     <add name="CONSOLE_URL" value="console" />
     <!-- application deployment -->
     <add name="DEPLOY_FILE" value="deploy.py" />
     <!-- <add name="DEPLOY_LOG" value="deploy.log" /> -->
     <!-- logging -->
     <add name="ERROR_LOG_DIR"  value="log" />
     <!-- reload on files changes -->
     <!-- <add name="WATCH_FILE_CHANGES_MASK" value="*.py" /> -->
    </environmentVariables>
   </application>
  </heliconZoo>
  <handlers>
   <!-- Django or WSGI application over fastcgi -->
   <add name="python.project#x86" scriptProcessor="python.2.7.wsgi" path="*" verb="*"
   modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" />
   <add name="python.project#x64" scriptProcessor="python.2.7.wsgi" path="*" verb="*"
   modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" />
   <!-- HTTP backend (Tornado) over http -->
   <!--
   <add name="python.project#x86" scriptProcessor="python.2.7.http" path="*" verb="*"
   modules="HeliconZoo_x86" preCondition="bitness32" resourceType="Unspecified" requireAccess="Script" />
   <add name="python.project#x64" scriptProcessor="python.2.7.http" path="*" verb="*"
   modules="HeliconZoo_x64" preCondition="bitness64" resourceType="Unspecified" requireAccess="Script" />
    -->
  </handlers>
 </system.webServer>
</configuration>
Environment variables
- 
		PYTHONPATH— optional path to Python modules. In the example it points to application root, the python_modules\Lib\site-packages subfolder and also includes value defined by user.
- 
		DJANGO_SETTINGS_MODULE— optional path to a file with Django application settings. By default it’ssettings.py.
- 
		django.root— optional virtual path of the application. In the example its value is taken from the%APPL_VIRTUAL_PATH%variable.
- 
        DEPLOY_FILE— optional path to a a script which is run before application startup and every time IIS application pool recycles. The script usually contains deployment instructions to satisfy application dependencies and database migrations.
- 
        DEPLOY_LOG— optional path to a text file containing the output of the deploy script. It’s recommended to set this variable if you use deploy script.
- 
		WATCH_FILE_CHANGES_MASK— files mask to watch for chnages. Worker is restarted every time a file of specified type changes. In the example all.pyfiles are monitored.
web.config to disable Django in directory with media/static files:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <!-- 
      This removes Helicon Zoo handler and makes IIS processing static files.
      -->
      <remove name="django.project#x64" />
      <remove name="django.project#x86" />
    </handlers>
  </system.webServer>
</configuration>deploy.py file example:
Deploy file is used to execute commands, such as components installations or database migrations, on a server when the application initially starts or updated. The following code is only an example. We recommend you to use deploy.py file that comes with the Python project template.
# This file is example of deploy.py
#
# Path to this file is configured in web.config:
#      <application name="django.project.x86" >
#        <environmentVariables>
#          <add name="DEPLOY_FILE" value="deploy.py" />
#          <add name="DEPLOY_LOG"  value="log\deploy.log" />
#        </environmentVariables>
#      </application>
#
# The file is executed once on the first request after every restart of IIS application.
# The file output is redirected to log file described in DEPLOG_LOG environment variable.
#
import sys
import os
import os.path
VIRTUALENV_EXE = os.path.join(os.path.dirname(sys.executable), 'scripts\\virtualenv.exe')
VIRTUALENV_NAME = 'venv'
DJANGO_PROJECT_NAME = 'project'
PROJECT_DIR = os.path.dirname(__file__)
def run(command, exit_on_error=True):
    print('\nRunning command: '+command)
    status = os.system(command)
    if status != 0:
        sys.exit(status)
def django_manage(command):
    run(DJANGO_PROJECT_NAME + '\\manage.py ' + command)
def main():
    os.chdir(PROJECT_DIR)
    # update APPDATA env for pip
    #os.environ['APPDATA'] = os.path.join(PROJECT_DIR, PYTHON_MODULES_DIR)
    # create virtual environment
    if not os.path.exists(VIRTUALENV_NAME):
        run(VIRTUALENV_EXE+' '+VIRTUALENV_NAME)
    # install requirements to local folder
    run('pip install --requirement=requirements.txt')
    # run manage.py syncdb --noinput
    #django_manage('syncdb --noinput')
    # run manage.py migrate
    #django_manage('migrate')
    # collect static
    #django_manage('collectstatic --noinput')
    # that's all
    print "Bye!"
if __name__=='__main__':
    main()