a basic django introduction

Post on 19-Jan-2015

145 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

Web Development With Django

A Basic Introduction

Ganga L

Python Frameworks

Django

CherryPy

Pylons

Flask

Bottle

Tipfy

Pyramid

Cubic Web

GAE framework

Outline

What Is Django?

Project Structure

Data Handling

The Admin Interface

Django Forms

Views

Templates

What Is Django?

High-level framework for rapid web development

Complete stack of tools

Data modelled with Python classes

Production-ready data admin interface, generated dynamically

Elegant system for mapping URLs to Python code

Generic views’ to handle common requests

Clean, powerful template language

Components for user authentication, form handling, caching . . .

Creating Projects & Apps

Creating a project:

django-admin.py startproject mysite

Creating an app within a project directory:

cd mysite

./manage.py startapp poll

Project Structure

A Python package on your PYTHONPATH

Holds project-wide settings in settings.py

Holds a URL configuration (URLconf) in urls.py

Contains or references one or more apps

App

A Python package on your PYTHONPATH

(typically created as a subpackage of the project itself)

May contain data models in models.py

May contain views in views.py

May have its own URL configuration in urls.py

Up & Running

Set PYTHONPATH to include parent of your project directory

Define new environment variable DJANGO_SETTINGS_MODULE,

setting it to project settings (mysite.settings)

3 Try running the development server:

/manage.py runserver

Creating The Database

Create database polls in youe database

Sync installed apps with database:

./manage.py syncdb

Create Project

Create Project mysite

mysite/

manage.py

mysite/

__init__.py

settings.py

urls.py

Create Application

python manage.py startapp polls

polls/

__init__.py

models.py

tests.py

views.py

Create Models

from django.db import models

class Poll(models.Model): question = models.CharField(max_length=200) pub_date = models.DateTimeField('date published')

class Choice(models.Model): poll = models.ForeignKey(Poll) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0)

The Data Model

A description of database layout, as a Python class

Normally represents one database table

Has fields that map onto columns of the table

Many built-in field types

CharField, TextField IntegerField, FloatField, DecimalField DateField, DateTimeField, TimeField EmailField, URLField ForeignKey . . .

Installed App

INSTALLED_APPS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'polls',

)

python manage.py syncdb

Registering Models in Admin

In admin.py in the Poll app:

from django.contrib import adminfrom mysite.polls.models import Poll

admin.site.register(Poll)

In urls.py:

from django.conf.urls import patterns, include, url

from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)),)

Provide ready-made logic for many common tasks:

Issuing a redirect Displaying a paginated list of objects Displaying a ‘detail’ page for a single object Yearly, monthly or daily listing of date-based

objects ‘Latest items’ page for date-based objects Object creation, updating, deletion (with/without

authorisation)

Generic Views

Generic Views Example

views.py

def index(request): return HttpResponse("Hello, world. You're at the poll index.")

from django.conf.urls.defaults import *from polls import views

urlpatterns = patterns('', url(r'^$', views.index, name='index'))

Url.py

from django.conf.urls import patterns, include, url

from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('',url(r'^polls/', include('polls.urls')),url(r'^admin/', include(admin.site.urls)),

)

views.py

Main URL.py

Creating & Saving Objects

Invoke constructor and call save method:

call create method of Club model manager:

poll = Poll(question='what is your DOB? ', year='1986)poll.save()

Poll.objects.create(question='what is your DOB? ', year='1986)

View Function

Takes an HTTPRequest object as a parameter

Returns an HTTPResponse object to caller

Is associated with a particular URL via the URLconf

from datetime import datefrom django.http import HttpResponse

def today(request):html = '<html><body><h2>%s</h2></body></html>' % date.today()return HttpResponse(html)

from django.shortcuts import render_to_responseFrom mysite.polls.models import Poll

def poll_details(request):today = date.today()poll_data = Poll.objects.all()return render_to_response('clubs.html', locals(), context_instance =

RequestContext(request))

HTTP Response

Templates

Text files containing

Variables, replaced by values when the template is rendered[

{{ today }} Filters that modify how values are displayed

{{ today|date:"D d M Y" }} Tags that control the logic of the rendering

process {% if name == "nick" %} <p>Hello, Nick!</p> {% else %} <p>Who are you?</p> {% endif %}

Template Example

settings.py

TEMPLATE_DIRS = (os.path.join(os.path.dirname(__file__), 'templates'),)

templates/club/club_list.html

{% extends "base.html" %}{% block title %}Clubs{% endblock %}{% block content %}

<h1>Clubs</h1><ol>

{% for club in clubs %}<li>{{ club }}</li>

{% endfor %}</ol>

{% endblock %}

Django Forms

A collection of fields that knows how to validate itself and display itself as HTML.

Display an HTML form with automatically generated form widgets.

Check submitted data against a set of validation rules.

Redisplay a form in the case of validation errors.

Convert submitted form data to the relevant Python data types.

Django Model Forms

from django.forms import ModelForm

import mysite.polls.models import Poll

class PollForm(ModelForm):

class Meta:

model = Pole

A Basic Django Forms

Standard Views.py

Standard Views.py

Standard Views.py

Easy Views.py

Easy Views.py

Summary

We have shown you

The structure of a Django project How models represent data in Django applications How data can be stored and queried via model

instances How data can be managed through a dynamic

admin interface How functionality is represent by views, each

associated

with URLs that match a given pattern How views render a response using a template

Thank You

top related