7. Installing virtualenv and
virtualenvwrapper
$ pip install virtualenv
then edit your .profile on osx or .bashrc
on linux and add the following lines:
export WORKON_HOME=~/Envs
source /usr/local/bin/virtualenvwrapper.sh
reload your .profile or .bashrc files:
$ . ~/.profile
8. Creating your virtual
environment
$ mkvirtualenv pyconph
activating a virtual environment:
$ workon pyconph
for windows users:
‣ https://github.com/davidmarble/virtualenvwrapper-win
‣ https://bitbucket.org/guillermooo/virtualenvwrapper-
10. Creating a Django project
$ django-admin.py startproject quickstart
Starting Django’s development server:
$ cd quickstart
$ python manage.py runserver
...
Development server is running at http://
127.0.0.1:8000/
Quit the server with CONTROL-C.
18. Syncing the database
$ python manage.py syncdb
Creating tables ...
...
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'marconi'):
E-mail address: wombat@gmail.com
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
24. Creating models
todo/models.py
1 from django.db import models
2
3 class Todo(models.Model):
4 name = models.CharField(max_length=100)
5 is_done = models.BooleanField(default=False)
6 created =
models.DateTimeField(auto_now_add=True)
8
Syncing
$ python manage.py syncdb
25. Exposing models to Django
$ vim todo/admin.py
from django.contrib import admin
from todo.models import Todo
class TodoAdmin(admin.ModelAdmin):
pass
admin.site.register(Todo, TodoAdmin)
27. Creating forms
$ vim todo/forms.py
1 from django import forms
2 from todo.models import Todo
3
4 class TodoForm(forms.ModelForm):
5 class Meta:
6 model = Todo
7 fields = ('name',)
8
9 class TodoListForm(forms.Form):
10 def __init__(self, *args, **kwargs):
11 todos = kwargs.pop('todos', [])
12 super(TodoListForm, self).__init__(*args, **kwargs)
13 for todo in todos:
14 field = str(todo.id)
15 self.fields[field] = forms.BooleanField(
16 required=False, label=todo.name)
17 self.fields[field].is_done = todo.is_done
18
19 def clean(self):
20 selected = [tid for tid, val in self.cleaned_data.items() if val]
21 if not selected:
22 raise forms.ValidationError("You need to select one or more items.")
23 return selected
28. Creating views
todo/views.py
1 from django.shortcuts import render_to_response, redirect
2 from django.template import RequestContext
3 from django.contrib import messages
4
5 from todo.forms import TodoListForm, TodoForm
6 from todo.models import Todo
...