Steg-för-steg hur jag skapar ett nytt Django-projekt. Det mesta är snott direkt från Kenneth Loves screencasts, men med vissa justeringar för att passa det sätt som jag arbetar på.
Skapa ett virtuell environment
Kontrollera att virtualenv är installerad på maskinen:
~ $ which virtualenv
/Library/Frameworks/Python.framework/Versions/2.6/bin/virtualenv
Installera om du inte får ett svar liknande det ovan:
$ sudo pip install virtualenv --upgrade
Downloading/unpacking virtualenv
…
Successfully installed virtualenv
Cleaning up...
Sedan skapar vi en arbetsmapp och sätter upp en virtuell omvärld
$ mkdir Test
$ cd Test
~/Test $ virtualenv test_venv --no-site-packages
New python executable in test_venv/bin/python
Installing setuptools............done.
Man aktiverar den nya, virtuella omvärlden genom att anropa ett script "activate" i miljön:
~/Test $ source test_venv/bin/activate
(test_venv)~/Test $
Observera att prompten nu påbörjas med namnet på den virtuella miljön. För att avsluta en virtuell miljö räcker det med att skriva deactivate.
Installera Django + bra tillbehör
Installation av senaste officiella utgåva av Django. Dessutom South, ett tillbehör för att migrera databasen efter ändring av Django-modellerna.
(test_venv)~/Test $ pip install django
Downloading/unpacking django
Downloading Django-1.2.1.tar.gz (6.2Mb): 6.2Mb downloaded
…
Successfully installed django
Cleaning up...
(test_venv)~/Test $ pip install south
Downloading/unpacking south
…
Successfully installed south
Cleaning up...
(test_venv)~/Test $
Skapa ett nytt projekt
(test_venv)~/Test $ django-admin.py startproject blog
(test_venv)~/Test $ cd blog
Kontrollera att det hela fungerade ok
(test_venv)~/Test/blog $ python manage.py runserver
Surfa upp på http://127.0.0.1:8000/
settings.py
Redigera settings.py och lägg till följande i början:
import os
PROJECT_ROOT = os.path.dirname(__file__)
Lägg in namn och epost i ADMINS så att man får epost om något går fel under drift.
ADMINS = (
(u'Fredrik Pihlström', 'fredrik@pihlan.com'),
)
Ställ in en databas i DATABASES. För att använda en SQLite3 databas, placerad i projektets huvudmapp:
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '%s/../db/kanji.db' % PROJECT_ROOT,
Fler inställningar:
TIME_ZONE = 'Europe/Stockholm'
LANGUAGE_CODE = 'sv-se'
ROOT_URLCONF har nu blivit lite roligt inställd ("rememberkanji.urls"), ändra den så att vi slipper bli beroende av projektnamnet. Om flera projekt skall köras i samma virtuella miljö, kan det vara bra att ha kvar inställningen som den var, annars kommer flera "urls" hamna i PYTHON_PATH. Normalt sett kör man varje projekt med en egen miljö även på servern.
ROOT_URLCONF = 'urls'
Längst ned i filen finns INSTALLED_APPS. Tag bort kommentarsmärket för django.contrib.admin och lägg till 'south',:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.admin',
# Tredjepartspaket
'south',
)
Slutligen lägg till lite kod i slutet av filen för läsa in från en annan inställningsfil, local_settings.py. På det sättet kan man ha separata i
try:
from local_settings import *
except ImportError:
pass
Skapa db
Skapa mappen som databasen skall ligga i (observera att den enligt våra inställningar i DATABASES['ENGINE'] skall ligga i ~/Test/db/
(test_venv)~/Test/blog $ mkdir ../db
Dags att kicka igång Django på riktigt.
(test_venv)~/Test/blog $ python manage.py syncdb
Creating table auth_permission
…
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no):
Svara yes och fyll i de följande frågorna om superanvändarens login och lösen.
…
Installing index for auth.Message model
No fixtures found.
urls.py
Redigera filen urls.py. I den filen skall tre raders kommentarstatus tas bort (det finns hjälptext i filen för ändamålet) för att admin-paketet skall vara åtkomligt:
from django.contrib import admin
admin.autodiscover()
…
(r'^admin/', include(admin.site.urls)),
Starta utvecklingsservern igen:
(test_venv)~/Test/blog $ python manage.py runserver
och surfa upp på http://127.0.0.1:8000/admin/, logga in och ta dig en titt.