z6c - personal blog about topics

Christian Müller – Letzte Änderung: 16.01.2014 14:41 Uhr

Django project in Virtual Environment with bootstrapped_admin and MySQL from scratch in PyCharm3

Eine ausführliche Schritt für Schritt Anleitung, ein Django Projekt mit meinen präferierten Paketen und Settings in PyCharm3 zu starten.

Voraussetzungen

Angemerkt sei, daß ich auf meinen Systemen zwecks einfacherem Deployment jeweils einen Symlink von /env in den Development Folder meines Users habe. Des weiteren weiss ich, dass das ganze mit folgenden Komponenten funktioniert, was nicht bedeutet, daß andere Konstellationen nicht zum Erfolg führen...

Meine Installation sieht wie folgt aus:

  • PyCharm3
  • OSX mit Homebrew
  • Python 2.x (brew install python)
  • einen funktionierenden MySQL Server und zugehörige Accountdaten sowie eine bereits existierende Datenbank (z.B. XAMPP)

PyCharm3

Projekt und Virtual Environment anlegen

File -> New Project...

Zuerst Interpreter definieren:

  • Neben der Interpreter Auswahl auf "..."
  • ca. Mitte des Fensters auf das Python Symbol ("Create Virtual Environment")
  • Name entspricht Projektname (lowercase)
  • Location /env/Projektname(lowercase)
  • Base Interpreter (Bei mir umbenannt in brew py 2.x, per default liegt das brew(homebrew) Python unter /usr/local/bin/python2.7)
  • OK
  • In der ENV Übersicht das neue Environment auswählen und Mitte des Fensters auf bearbeiten klicken
  • Umbenennen in Projektname (Python 2.x.x virtualenv at... entfernen)
  • Apply
  • OK

Konfiguration Projektparameter

  • Project Name: erstmal leer lassen
  • Location: /env/PROJEKTNAME (Unterordner Projektname wird an Pfad angefügt)
  • Project type: Django Project
  • Interpreter Projektname (Das eben angelegte Environment)
  • Install Django aktivieren
  • JETZT Project Name eingeben: wie oben (Environment)

Der Pfad sollte nun folgendermassen aussehen

/env/ENVNAME/PROJEKTNAME

In meinen Settings sind ENVNAME und PROJEKTNAME jeweils identisch, es sieht also beispielsweise so aus:

/env/beispielprojekt/beispielprojekt

  • OK
  • Enable Django admin aktivieren
  • Projekt fertigstellen und öffnen: Application Name leer lassen und OK drücken
  • Optional statt dessen: Erste App anlegen durch Eingabe Application Name, OK drücken

Django

Installation Pakete

Tools / Open Terminal (erst seit PyCharm3)

source ../bin/activate
pip install django-admin-bootstrapped south django-autocomplete-light django_extensions django-taggit mysql-python

Sollte der Fehler EnvironmentError: mysql_config not found auftreten, findet man unter zentonic: pip install mysql-python fails with EnvironmentError: mysql_config not found eine Lösung für Linux und OSX.

Projekt-Settings

in /env/ENVNAME/PROJECTNAME/PROJECTNAME die Datei settings.py anpassen:

INSTALLED_APPS:

'autocomplete_light',
'django_extensions',
'south',
'taggit',

VOR django.contrib.admin:

'django_admin_bootstrapped',

Database Settings

Als Datenbank MySQL wählen.

Begründung:

SQLite kann nachträgliche Änderungen an Datenbank- und Tabellenstrukturen nur rudimentär umsetzen. Löschen / entfernen von Spalten oder Tabellen ist gar nicht möglich. Während der Projektanfangsphase müssen jedoch oftmals grundlegende Strukturen geändert und angepasst werden. Dies wird von MySQL in Verbindung mit SOUTH gut unterstützt.

Die vorhandenen Settings (DATABASE={}…) auskommentieren und ersetzen durch:

# Database Config zwecks Deploying ausgelagert
from databasehostdef import *

Datei databasehostdef.py anlegen:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'PROJECTNAME', # Or path to database file if using sqlite3.
        'USER': 'USER', # Not used with sqlite3.

        'PASSWORD': 'PASSWORD', # Not used with sqlite3.
        'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '', # Set to empty string for default. Not used with sqlite3.
    }
}

Language and Time

LANGUAGE_CODE = 'DE-de'

TIME_ZONE = 'Europe/Berlin'

Staticfiles (für django-admin-bootsrapped)

STATICFILES_DIRS = (
    "/env/ENVNAME/PROJECTNAME/bootstrap",
)

Django init

Weiter gehts wieder im vorhin geöffneten Terminal:

python manage.py startapp APPNAME

In settings.py die App den INSTALLED_APPS hinzufügen

python manage.py syncdb

Admin User anlegen, wenn dazu aufgefordert.

python manage.py schemamigration APPNAME --initial
python manage.py schemamigration django_extensions --initial
python manage.py schemamigration taggit --initial

python manage.py migrate APPNAME
python manage.py migrate django_extensions
python manage.py migrate taggit

Table allready exist

Kommt dieser Fehler bei einem migrate, hilft python manage.py migrate APPNAME --fake

Erster Start

python manage.py runserver 0.0.0.0:1234

Test per http://127.0.0.1:1234

Administration per http://127.0.0.1:1234/admin

Kommentare für diesen Artikel noch nicht freigeschaltet.

Bitte eine Email an kommentare@zentonic.org mit Betreff "Kommentare für Post 71"