Difference between revisions of "Django"

From DUNE
Jump to navigation Jump to search
Line 23: Line 23:
 
=DB=
 
=DB=
 
Django comes packaged with a sqlite database. It will work fine for initial development and testing,
 
Django comes packaged with a sqlite database. It will work fine for initial development and testing,
but it's pretty certain that it won't handle concurrency well if it all. There are a few reasons for
+
but it won't handle concurrency in most cases (e.g. multiple clients of same type updating same
that, in particular lack of table/row lock capability, and the presence of the file lock on the DB
+
DB tables). There are a few reasons for that, such as:
file.
+
* lack of table/row lock capability
 +
* presence of the file lock on the whole DB file
  
 
If the application requires any level of concurrency a different DB engine will be needed such as
 
If the application requires any level of concurrency a different DB engine will be needed such as
 
PostgreSQL, MySQL, Oracle etc.
 
PostgreSQL, MySQL, Oracle etc.
 +
 +
=The Development Server=
 +
Not suitable for real life deployment, as the name suggests it's for development only.
 +
In addition to potential security issues, it may be challenging for thread safety unless one disables multithreading.
 +
If you want to access the development server on a local network, from a different computer, the command line below
 +
can serve as an example:
 +
<pre>
 +
./manage.py runserver 0.0.0.0:8000
 +
</pre>

Revision as of 00:25, 5 April 2017

Installation

There are a few ways to install Django, perhaps the cleanest and easiest is by using pip. With Python 3+ you will need to install pip3 first, like

apt-get install python3-pip

After that, Django is obtained by

pip3 install django==1.10

...and other versions available instead of 1.10 can be specified if needed. An important and popular Django add-on package "tables2" can be added likewise:

pip3 install django-tables2

To check which version of Django you are using at the moment, start interactive Python and use this:

import django
django.VERSION

DB

Django comes packaged with a sqlite database. It will work fine for initial development and testing, but it won't handle concurrency in most cases (e.g. multiple clients of same type updating same DB tables). There are a few reasons for that, such as:

  • lack of table/row lock capability
  • presence of the file lock on the whole DB file

If the application requires any level of concurrency a different DB engine will be needed such as PostgreSQL, MySQL, Oracle etc.

The Development Server

Not suitable for real life deployment, as the name suggests it's for development only. In addition to potential security issues, it may be challenging for thread safety unless one disables multithreading. If you want to access the development server on a local network, from a different computer, the command line below can serve as an example:

./manage.py runserver 0.0.0.0:8000