Learning Website Development with Django - Hourieh Ayman - E-Book

Learning Website Development with Django E-Book

Hourieh Ayman

0,0
31,19 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

In Detail



Django is a high-level Python web framework that was developed by a fast-moving online-news operation to meet the stringent twin challenges of newsroom deadlines and the needs of web developers. It is designed to promote rapid development and clean, pragmatic design and lets you build high-performing, elegant web applications rapidly. Django focuses on automating as much as possible and adhering to the DRY (Don't Repeat Yourself) principle, making it easier to build high-performance web applications faster, with less code.



This book will show you how to assemble Django's features and leverage its power to design, develop, and deploy a fully-featured website. It will walk you through the creation of an example web application, with lots of code. Each chapter will add new features to the site, and show what parts of Django to work on to build these features.



This book has been specifically written for Python developers new to Django, and it's goal is to help you put together Django applications as quickly as possible. This book will give you clear, concise and, of course, practical guidance to take you from the basics of creating pages with Django through to learning the skills that will make you a Django developer to be reckoned with.



This book is a beginner's guide to design, develop, and deploy a fully-featured dynamic website using the features of Django.

Approach



Being a beginner's guide this book has a very simple and clear approach. It is a practical guide that will help you learn the features of Django and help you build a dynamic website using those features.

Who this book is for



This book is for web developers who want to see how to build a complete site with Web 2.0 features, using the power of a proven and popular development system, but do not necessarily want to learn how a complete framework functions in order to do this.



Basic knowledge of Python development is required for this book, but no knowledge of Django is expected.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Seitenzahl: 341

Veröffentlichungsjahr: 2008

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Table of Contents

Learning Website Development with Django
Credits
About the Author
About the Reviewers
Preface
What This Book Covers
Conventions
Reader Feedback
Customer Support
Downloading the Example Code for the Book
Errata
Questions
1. Introduction to Django
The MVC Pattern in Web Development
Why Python?
Why Django?
Tight Integration between Components
Object-Relational Mapper
Clean URL Design
Automatic Administration Interface
Advanced Development Environment
Multi-Lingual Support
History of Django
Summary
2. Getting Started
Installing the Required Software
Installing Python
Installing Python on Windows
Installing Python on UNIX/Linux
Installing Python on Mac OS X
Installing Django
Installing Django on Windows
Installing Django on UNIX/Linux and Mac OS X
Installing a Database System
Creating Your First Project
Creating an Empty Project
Setting up the Database
Launching the Development Server
Summary
3. Building a Social Bookmarking Application
A Word about Django Terminology
URLs and Views: Creating the Main Page
Creating the Main Page View
Creating the Main Page URL
Models: Designing an Initial Database Schema
The Link Data Model
The User Data Model
The Bookmark Data Model
Templates: Creating a Template for the Main Page
Putting It All Together: Generating User Pages
Creating the URL
Writing the View
Designing the Template
Populating the Model with Data
Summary
4. User Registration and Management
Session Authentication
Creating the Login Page
Enabling Logout Functionality
Improving Template Structure
User Registration
Django Forms
Designing the User Registration Form
Account Management
Summary
5. Introducing Tags
The Tag Data Model
Creating the Bookmark Submission Form
Restricting Access to Logged-in Users
Methods for Browsing Bookmarks
Improving the User Page
Creating a Tag Page
Building a Tag Cloud
A Word on Security
SQL Injection
Cross-Site Scripting (XSS)
Summary
6. Enhancing the User Interface with Ajax
Ajax and Its Advantages
Using an Ajax Framework in Django
Downloading and Installing jQuery
The jQuery JavaScript Framework
Element Selectors
jQuery Methods
Hiding and Showing Elements
Accessing CSS Properties and HTML Attributes
Manipulating HTML Documents
Traversing the Document Tree
Handling Events
Sending Ajax Requests
What Next?
Implementing Live Searching of Bookmarks
Implementing Searching
Implementing Live Searching
Editing Bookmarks in Place
Implementing Bookmark Editing
Implementing In-Place Editing of Bookmarks
Auto-Completion of Tags
Summary
7. Voting and Commenting
Sharing Bookmarks on the Main Page
The SharedBookmark Data Model
Modifying the Bookmark Submission Form
Browsing and Voting for Shared Bookmarks
The Popular Bookmarks Page
Commenting on Bookmarks
Enabling the Comments Application
Creating a View for Comments
Displaying Comments and a Comment Form
Creating Comment Templates
Summary
8. Creating an Administration Interface
Activating the Administration Interface
Customizing the Administration Interface
Customizing Listing Pages
Overriding Administration Templates
Users, Groups and Permissions
User Permissions
Group Permissions
Using Permissions in Views
Summary
9. Advanced Browsing and Searching
Adding RSS Feeds
Creating the Recent Bookmarks Feed
Customizing Item Fields
Creating the User Bookmarks Feed
Linking Feeds to HTML Pages
Advanced Searching
Retrieving Objects with the Database API
Advanced Queries with Q Objects
Improving the Search Feature
Organizing Content into Pages (Pagination)
Summary
10. Building User Networks
Building Friend Networks
Creating the Friendship Data Model
Writing Views to Manage Friends
The Friends List View
Creating the "Add Friend" View
Inviting Friends Via Email
The Invitation Data Model
The "Invite a Friend" Form and View
Handling Activation Links
Improving the Interface with Messages
Summary
11. Extending and Deploying
Internationalization (i18n)
Marking Strings as Translatable
Creating Translation Files
Enabling and Configuring the i18n System
Improving Performance with Caching
Enabling Caching
Simple Caching
Database Caching
File System Caching
Memcached
Configuring Caching
Caching the Whole Site
Caching Specific Views
Unit Testing
The Test Client
Testing the Registration View
Testing the "Save Bookmark" View
Deploying Django
The Production Web Server
The Production Database
Turning Off Debug Mode
Changing Configuration Variables
Setting Error Pages
Summary
12. What Next?
Custom Template Tags and Filters
Model Managers and Custom SQL
Generic Views
Contributed Sub-Frameworks
Flatpages
Sites
Markup Filters
Humanize
Sitemaps
Cross-site Request Forgery Protection
Message System
Subscription System
User Scores
Summary
Index

Learning Website Development with Django

Ayman Hourieh

Learning Website Development with Django

Copyright © 2008 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.

First published: April 2008.

Production Reference: 1040408

Published by Packt Publishing Ltd.

32 Lincoln Road

Olton

Birmingham, B27 6PA, UK.

ISBN 978-1-847193-35-3

www.packtpub.com

Cover Image by Raghuram Ashok (<[email protected]>)

Credits

Author

Ayman Hourieh

Reviewers

Susmita Basu

Michael Cassidy

Wendy Langer

Jan Smith

Senior Acquisition Editor

Douglas Paterson

Development Editor

Ved Prakash Jha

Technical Editor

Sarah Cullington

Editorial Team Leader

Mithil Kulkarni

Project Manager

Abhijeet Deobhakta

Project Coordinator

Zenab Kapasi

Indexer

Monica Ajmera

Proofreaders

Martin Brooks

Chris Smith

Production Coordinator

Aparna Bhagat

Shantanu Zagade

Cover Designer

Aparna Bhagat

About the Author

Ayman Hourieh holds a bachelor degree in Computer Science. He joined the engineering team at Google in January 2008. Prior to that, he worked with web application development for more than two years. In addition, he has been contributing to several Open Source projects such as Mozilla Firefox. Ayman also worked as a teaching assistant in Computer Science courses for one year. Even after working with a variety of technologies, Python remains Ayman's favorite programming language. He found Django to be a powerful and flexible Python framework that helps developers to produce high-quality web applications in a short time.

I would like to thank my wife, Nadia, for all her help in writing this book. Not only did she provide support and motivation, but she also helped me greatly in proofreading and testing. I would also like to thank my mother and father for their continuous support and encouragement.

About the Reviewers

Michael Cassidy holds a bachelor degree in Computer Science. He currently works for Obsidian Consulting working on Python web applications. His primary focus is on automated testing of web applications.

Michael has been on a team using Django to update the database system of Computerbank, who recycle donated computers with quality, free software and distribute them to disadvantaged individuals and community groups.

Wendy Langer first learned to program in Microbee Basic. This all happened a long time ago, in a galaxy far, far, away. Later she learned Fortran and a little C++ while studying for a physics degree at University. Eventually she discovered the Python language, and thus began a love affair, which has not yet ended.

She has worked as a programmer in web development using technologies such as Python, Zope, Django, mySQL, and postgreSQL.

I would like to thank Jan Smith and Kerry Langer for their help during the review process.

Jan V. Smith has been working on open-source software since 2001. She is a Co-founder of OzZope, the Australian Zope Users Group. She contributed to 'Content Management mit Zope' by Stephan Richter and was a reviewer for 'Web Component Development with Zope 3' by Philipp von Weitershausen. Jan has written documentation for the open-source CMS Silva and a number of articles on issues relating to open source software.

Jan is Vice President of 'Computerbank Victoria' where donated computers are recycled with Linux and open source software and distributed to people on low incomes. She has built Computerbank's Plone and Silva websites and is currently building a Django database for Computerbank with Wendy Langer.

She lives in Melbourne Australia with her husband and son.

Preface

Django is a high-level Python web application framework designed to support the development of dynamic websites, web applications, and web services. It is designed to promote rapid development and clean, pragmatic design and lets you build high-performing, elegant web applications quickly.

In this book, you will learn about employing this MVC web framework, which is written in Python, a powerful and popular programming language. The book emphasizes utilizing Django and Python to create a Web 2.0 bookmark-sharing application with many common features found in today's Web 2.0 sites. The book follows a tutorial style to introduce concepts and explain solutions to problems. It is not meant to be a reference manual for Python or Django. Django will be explained as we build features throughout the chapters, until we realize our goal of having a working Web 2.0 application for storing and sharing bookmarks.

I sincerely hope that you will enjoy reading the book as much as I enjoyed writing it. And I am sure that by its end, you will appreciate the benefits of using Python and Django for your next project. They are powerful, simple, and provide a robust environment for rapid development of your dynamic web applications.

What This Book Covers

Chapter 1 gives you an introduction to MVC web development frameworks, a history of Django, and explains why Python and Django are the best tools to use to achieve the aim of this book.

Chapter 2 provides a step-by-step guide to installing Python, Django and an appropriate database system so that you can create an empty project and set-up the development server.

Chapter 3 creates the main page so that we have the initial view and a URL. You will learn how to create templates for both the main page and the user page.

Chapter 4 is where the application really starts to take shape as user management is implemented. Learn how to log users in and out, create a registration form and allow users to manage their own accounts by changing email or password details.

Chapter 5 explores how to manage your growing bank of content. Create tags, tag clouds, and a bookmark submission form all of which interact with your database. Security features also come into play as you learn how to restrict access to certain pages and protect against malicious input.

Chapter 6 enables you to enhance your application with AJAX and jQuery as users can now edit entries in place and do live searching. Data entry is also made easier with the introduction of auto-completion.

Chapter 7 shows you how to enable users to vote and comment on their bookmark entries.

Chapter 8 focuses on the administration interface. You will learn how to create and customize the interface, which allows you to manage content and to set permissions for users and groups.

Chapter 9 will give your application a much more professional feel through the implementation of RSS feeds and pagination.

Chapter 10 tackles social networks providing the 'social' element of your application. Users will be able to build a friend network, browse the bookmarks of their friends, and invite their friends to join the website.

Chapter 11 covers extending and deploying your application. You will also learn about advanced features including offering the site in multiple languages, managing the site during high traffic, and configuring the site for a production environment.

Chapter 12 takes a brief look at extra Django features that have not been covered elsewhere in the book. You will gain the knowledge required to further your application and build on the basic skills that you have learned throughout the book.

Reader Feedback

Feedback from our readers is always welcome. Let us know what you think about this book, what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.

To send us general feedback, simply drop an email to <[email protected]>, making sure to mention the book title in the subject of your message.

If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email <[email protected]>. If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.

Customer Support

Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

Downloading the Example Code for the Book

Visit http://www.packtpub.com/files/code/3353_Code.zip to directly download the example code.

The downloadable files contain instructions on how to use them.

Errata

Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing this you can save other readers from frustration, and help to improve subsequent versions of this book. If you find any errata, report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the let us know link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata added to the list of existing errata. The existing errata can be viewed by selecting your title from http://www.packtpub.com/support.

Questions

You can contact us at <[email protected]> if you are having a problem with some aspect of the book, and we will do our best to address it.

Chapter 1. Introduction to Django

Welcome! In this book, you will learn about Django, an Open Source web framework that enables you to build clean and feature-rich web applications with minimal time and effort. Django is written in Python, a general purpose language that is well suited for developing web applications. Django loosely follows a model-view-controller design pattern, which greatly helps in building clean and maintainable web applications.

This chapter gives you an overview of the technologies used in this book. The following chapters will take you through a tutorial for building a social bookmarking application from the group using Django.

In this introduction, you will read about the following:

The MVC pattern in web development.Why we should use Python.Why we should use Django.The history of Django.

The MVC Pattern in Web Development

Web development has made great progress during the last few years. It began as a tedious task that involved using CGI for interfacing external programs with the web server. CGI applications used standard I/O facilities available to the C programming language in order to manually parse user input and produce page output. In addition to being difficult to work with, CGI required a separate copy of the program to be launched for each request, which used to quickly overwhelm servers.

Next, scripting languages were introduced to web development, and this inspired developers to create more efficient technologies. Languages such as Perl and PHP quickly made their way into the world of web development, and as a result, common web tasks such as cookie handling, session management, and text processing became much easier. Although scripting languages included libraries to deal with day-to-day web-related tasks, they lacked unified frameworks, as libraries were usually disparate in design, usage, and conventions. Therefore, the need for cohesive frameworks arose.

A few years ago, the model-view-controller pattern came for web-based applications was introduced. This software engineering pattern separates data (model), user interface (view), and data handling logic (controller), so that one can be changed without affecting the others. The benefits of this pattern are obvious. With it, designers can work on the interface without worrying about data storage or management. And developers are able to program the logic of data handling without getting into the details of presentation. As a result, the MVC pattern quickly found its way into web languages, and serious web developers started to embrace it in preference to previous techniques.

The diagram below shows how each of the components of the MVC pattern interact with each other to serve a user request:

Why Python?

Python is a general purpose programming language. Although it is used for a wide variety of applications, Python is very suitable for developing web applications. It has a clean and elegant syntax, and is supported by a large library of standard and contributed modules, which covers everything from multi-threading to the zipping of files. The language's object-oriented model is especially suited for MVC style development.

Sooner or later, performance will become a major concern with web projects, and Python's runtime environment shines here, as it is known to be fast and stable. Python supports a wide range of web servers through modules, including the infamous Apache. Furthermore, it is available for all the major platforms: UNIX/Linux, Windows, and Mac. Python also supports a wide array of database servers, but you won't have to deal directly with them; Django provides a unified layer of access to all available database engines, as we will see later.

Python is free software; you can download and use it freely from http://python.org/. You are even allowed to distribute it without having to pay any fees. Access to the source code is available to those who want to add features or fix bugs. As a result, Python enjoys a large community of developers who quickly fix bugs and introduce new features.

Python is very easy to learn, and it is being adopted in many universities as the first programming language to be taught. Although this book assumes working knowledge of Python, advanced features will be explained as they are used. If you want to refresh your Python knowledge, you are recommended to read the official Python tutorial available at http://python.org/doc/ before continuing with this book.

To sum up, Python was chosen over many other scripting languages for this book for the following reasons:

Clean and elegant syntax.Large standard library of modules that covers a wide range of tasks.Extensive documentation.Mature runtime environment.Support for standard and proven technologies such as Linux and Apache.

Tip

If you want to learn more about Python and its features, the official Python website at http://python.org/ and the Python book "Dive Into Python" (freely available at http://www.diveintopython.org/) are both excellent sources.

Why Django?

Since the spread of the MVC pattern into web development, Python has provided quite a few choices when it comes to web frameworks, such as Django, TurboGears and Zope. Although choosing one out of many can be confusing at first, having several competing frameworks can only be a good thing for the Python community, as it drives the development of all frameworks further and provides a rich set of options to choose from.

Django is one of the available frameworks for Python, so the question is: what sets it apart to become the topic of this book, and what makes it popular in the Python community? The next subsections will answer these questions by providing an overview of the main advantages of Django.

Tight Integration between Components

First of all, Django provides a set of tightly integrated components; all of these components have been developed by the Django team themselves. Django was originally developed as an in-house framework for managing a series of news-oriented websites. Later its code was released on the Internet and the Django team continued its development using the Open Source model. Because of its roots, Django's components were designed for integration, reusability and speed from the start.

Object-Relational Mapper

Django's database component, the Object-Relational Mapper (ORM), provides a bridge between the data model and the database engine. It supports a large set of database systems, and switching from one engine to another is a matter of changing a configuration file. This gives the developer great flexibility if a decision is made to change from one database engine to another.

Clean URL Design

The URL system in Django is very flexible and powerful; it lets you define patterns for the URLs in your application, and define Python functions to handle each pattern. This enables developers to create URLs that are both user and search engine friendly.

Automatic Administration Interface

Django comes with an administration interface that is ready to be used. This interface makes the management of your application's data a breeze. It is also highly flexible and customizable.

Advanced Development Environment

In addition, Django provides a very nice development environment. It comes with a lightweight web server for development and testing. When the debugging mode is enabled, Django provides very thorough and detailed error messages with a lot of debugging information. All of this makes isolating and fixing bugs very easy.

Multi-Lingual Support

Django supports multi-lingual websites through its built-in internationalization system. This can be very valuable for those working on websites with more than one language. The system makes translating the interface a very simple task.

The standard features expected of a web framework are all available in Django. These include the following:

A template and text filtering engine with simple but extensible syntax.A form generation and validation API.An extensible authentication system.A caching system for speeding up the performance of applications.A feed framework for generating RSS feeds.

Even though Django does not provide a JavaScript library to simplify working with Ajax, choosing one and integrating it with Django is a straightforward matter, as we will see in later chapters.

So to conclude, Django provides a set of integrated and mature components, with excellent documentation, at http://www.djangoproject.com/documentation/, thanks to its large community of developers and users. With Django available, there has never been a better time to start learning a web development framework!

History of Django

Django started as an internal project at the Lawrence Journal-World newspaper in 2003. The web development team there often had to implement new features or even entire applications within hours. Therefore, Django was created to meet the fast deadlines of journalism websites, whilst at the same time keeping the development process clean and maintainable. By the summer of 2005, Django became mature enough to handle several high traffic sites, and the developers decided to release it to the public as an Open Source project. The project was named after the jazz guitarist Django Reinhardt.

Now that Django is an Open Source project, it has gathered developers and users from all over the world. Bug fixes and new features are introduced on a daily basis, while the original development team keeps an eye on the whole process to make sure that Django remains what it is meant to be—a web framework for building clean, maintainable and reusable web applications.

Summary

Web development has achieved large leaps of progress over the last few years. The advent of scripting languages, web frameworks, and Ajax made rapid development of web applications possible and easier than ever. This book takes you through a tutorial for building a Web 2.0 application using two hot technologies—Python and Django. The application allows users to store and share bookmarks. Many of the exciting Web 2.0 applications will be explained and developed throughout this book.

In the next chapter, we will set up our development environment by installing the necessary software, and get a feel for Django by creating our first application.

Chapter 2. Getting Started

Python and Django are available for multiple platforms. In this chapter, we will see how to set up our development environment on UNIX/Linux, Windows and Mac OS X. We will also see how to create our first project and how to connect it to a database.

We will learn about the following topics in this chapter:

We will learn the following topics in this chapter:Installing Python.Installing Django.Installing a database system.Creating your first project.Setting up the database.Launching the development server.

Installing the Required Software

Our development environment consists of Python, Django, and a database system. There are many different database systems available, but for the following examples, we will be using Sqlite3 which is included in the Python download. In this section, we will see how to install the necessary software packages.

Installing Python

Django is written in Python, so the the first step in setting up our development environment is to install Python. Python is available for a variety of operating systems, and installing Python is not very different from installing any other software package. The procedure depends on your operating system.

You will need a recent version of Python. Django requires Python 2.3 or higher. The latest version of Python at the time of writing is 2.5.

We will now describe the installation process for each operating system.

Installing Python on Windows

Python has a standard installer for Windows users. You will need to go to http://www.python.org/download/ and download the latest version. Next, double-click the .exe file and follow the installation instructions. The graphical installer will guide you through the installation process and create shortcuts to Python executables in the Start menu.

Once the installation has been done, we need to add the Python directory to the system path so that we can access Python while using the command prompt. To do this, open the Control Panel, double-click the System icon, go to the Advanced tab and click the Environment Variables button. A new dialog box will open. Select the Path system variable, and append the path where you installed Python. (The default path is usually c:\PythonXX, where XX is your Python version, but the folder is actually named Python25, so if your have Python version 2.5, you should name the command c:\Python25.) Don't forget to separate the new path from the one before it with a semicolon.

If you want to test your installation, open the Run dialog, type python and hit Enter. The Python interactive shell should open.

Installing Python on UNIX/Linux

If you use Linux or UNIX, chances are that you already have Python installed. To check, open a terminal, type python and hit Enter. If you see the Python interactive shell, then you already have Python installed:

Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2Type "help", "copyright", "credits" or "license" for more information.>>>

The first line of the output indicates the version installed on your system (2.5.1 here).

If you receive an error message instead of seeing the above output, or you have an old version of Python, you should read on.

UNIX users and Linux users are recommended to install and update Python through the system package manager. Although the actual details vary from system to system, it won't be any different from installing any other package.

For APT-based Linux distributions (such as Debian and Ubuntu), open a terminal and type:

$ sudo apt-get update$ sudo apt-get install python

Or if you have the Synaptic package manager, simply search for Python, mark its package for installation, and click on Apply.

Users of other Linux distributions are recommended to check their system documentation for information on how to use the package manager to install packages.

Installing Python on Mac OS X

Mac OS X comes with Python pre-installed. However, due to Apple's release cycle, it's often an old version. If you start the Python interactive shell and find a version older than 2.3, you should visit this URL: http://www.python.org/download/mac/ and download the most recent installer for your version of Mac OS X.

Now that Python is up and running, we are almost ready. Next, we will install Django and make sure that we have a database system.

Installing Django

Installing Django is very easy, but it depends on your operating system. Since Python is a platform-independent language, Django has one package that works everywhere regardless of your operating system.

To download Django, head to http://www.djangoproject.com/download/, and grab the latest official version. The code in this book was developed on Django 0.96 (the latest version at the time of writing), but most of the code should run on later official releases. Next, follow the instructions related to your platform.

Installing Django on Windows

After you download the Django archive, extract it to the C drive, and open a command prompt (by clicking on Start then Accessories). Change the current directory to where you extracted Django by issuing the following command, where x.xx is your Django version:

c:\>cd c:\Django-x.xx

Next, install Django by running the following command (for which you will need administrative privileges):

c:\Django-x.xx>python setup.py install

If the above instructions do not work, you can manually copy the django folder in the archive to the Lib\site-packages folder located in the Python installation directory. This will do the job of running the setup.py install command.

Tip

If you do not have a program to handle .tar.gz files on your system, I recommend using 7-Zip, which is free and available at http://www.7-zip.org/.

The last step is copying the django-admin.py file from Django-x.xx\django\bin to somewhere in your system path, such as c:\windows or the folder where you installed Python.

Once this has been done, you can safely remove the c:\Django-x.xx folder, because it is no longer needed.

That's it. To test your installation, open a command prompt and type the following command:

c:\>django-admin.py --version

If you see the current version of Django printed on screen, then everything is set.

Installing Django on UNIX/Linux and Mac OS X

Installation instructions for all UNIX and Linux systems are the same. You need to run the following commands in the directory where the Django-x.xx.tar.gz archive is located. These commands will extract the archive and install Django for you:

$ tar xfz Django-x.xx.tar.gz$ cd Django-x.xx$ sudo python setup.py install

The above instructions should work on any UNIX or Linux system as well as on Mac OS X. However, it may be easier to install Django through your system's package manager if it has a package for Django. Ubuntu has one, so to install Django on Ubuntu, simply look for a package called python-django in Synaptic, or run the following command:

$ sudo apt-get install python-django

You can test your installation by running this command:

$ django-admin.py --version

If you see the current version of Django printed on screen, then everything is set.

Installing a Database System

While Django does not require a database for it to function, the application that we are going to develop does. So in the last step of software installation, we are going to make sure that we have a database system for handling our data.

It is worth noting that Django supports several database engines: MySQL, PostgreSQL, MS SQL Server, Oracle, and SQLite. Interestingly however, you only need to learn one API in order to use any of these database systems. This is possibly because of Django's database layer, which abstracts access to the database system. We will learn about this later, but for now you only need to know that, regardless of which database system you choose, you will be able to run the Django applications developed in this book (or elsewhere) without modification.

If you have Python 2.5 or higher, you won't need to install anything, since Python 2.5 comes with the SQLite database management system contained in a module named sqlite3. Unlike client-server database systems, SQLite does not require a resident process in memory, and it stores the database in a single file, which makes it ideal for our development environment. Therefore, throughout this book, we will be using SQLite in our examples. Of course you are free to use your preferred database management system. We can tell Django what database system to use by editing a configuration file, as we will see in later sections. It is also worth noting that if you want to use MySQL, you will need to install MySQLdb, the MySQL driver for Python.

If you don't have Python 2.5, you can install the python module for SQLite manually by downloading it from http://www.pysqlite.org/ (for Windows users) or through your package manager (for UNIX and Linux users).

Tip

Do I need Apache (or some other web server)?

Django comes with its own web server, and we are going to use it during the development phase, because it is lightweight and comes pre-configured for Django. However, Django does support Apache and other popular web servers such as Lighttpd. We will see how to configure Django for Apache when we prepare our application for deployment later in this book.

The same applies to the database manager. During the development phase, we will use SQLite because it is easy to set up, but when we deploy the application, we will switch to a database server such as MySQL.

As I said earlier, regardless of what components we use, our code will stay the same; Django handles all the communication with the web and database servers for us.