Django Getting Started#

Create a project#

  1. Create a virtual env

    virtualenv -p python3.6 env source env/bin/activate

  2. Install django

    pip install django

  3. Create a project

    django-admin startproject learning_site

Ensure underscore as it is a module name

The learning_site folder:

  • is not an app but a stub
  • holds the settings.py
  • holds the urls.py = base urls
  • wysgi.py is entry point to web server

Run the server#

cd learning_site
./manage.py runserver

Go to the link it shows you

Unapplied migrations - ways to track db schema changes

ctrl + c to cancel serving

Run Migrations#

./manage.py migration

Database is created automatically with sqlite3 - which is good to play around with. For live sites it is best to use mysql

Hello World#

Django is different in that it calls templates - templates and functions that return rendered templates - views

All views have to accept a request object

views.py:

    from django.http import HttpResponse

    def hello_world(request):
        return HttpResponse('Hello World')
  • Some frameworks have implicit routing by function name
  • Some functions lets you set route for function name
  • Django URL’s are created with regular expressions

To import from the current directory use from . import views

urls.py:

   from django.conf.urls import url
    from django.contrib import admin

    from . import views

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^$', views.hello_world),
    ]

Pluggable Apps#

  • Apps - self contained bit of functionality
  • PLuggable - django apps that can be moved

Create an app#

It is a good idea to name the app after it’s main model

./manage.py startapp courses

__init__.py mark a directory as a module

Add the courses to INSTALLED APPS in settings.py