Feature #878
Updated by Daniel Curtis about 8 years ago
{{>toc}} This is a condensed version of the Django tutorial found "here":https://docs.djangoproject.com/en/1.10/intro/tutorial01/ h2. Setup The Environment * Setup a python virtual environment to develop in #* For Arch Linux use issue #876 #* For FreeBSD use issue #874 h2. Install Django * Switch to the pydev user and activate the virtualenv: <pre> su - pydev source ~/venv/new_app/bin/activate </pre> * And install Django: <pre> pip install Django </pre> h2. New Django App * Create a new Django project: <pre> django-admin startproject www_example_com cd www_example_com </pre> * Edit the project settings.py file: <pre> vi www_example_com/settings.py </pre> #* And add the host IP address of the local development machine: <pre> ALLOWED_HOSTS = ['192.168.1.90'] </pre> * Test the new app by running the development test web server: <pre> ./manage.py runserver 0.0.0.0:8000 </pre> *NOTE*: Press @CTRL+C@ to stop the test web server * Now create a new simple poll web application: <pre> ./manage.py startapp polls </pre> h3. Create View * Create the initial view: <pre> vi polls/views.py </pre> #* And add the following: <pre> from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.") </pre> * Now map the view to a URL by creating: <pre> vi polls/urls.py </pre> #* And add the following: <pre> from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), ] </pre> * Next, point the root URLconf at the polls.urls module: <pre> vi www_example_com/urls.py </pre> #* And add the URL handler the @polls/@ part of the web application: <pre> from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^polls/', include('polls.urls')), url(r'^admin/', admin.site.urls), ] </pre> * Rerun the development test server: <pre> ./manage.py runserver 0.0.0.0:8000 </pre> #* And open a web browser and go to http://192.168.1.90/polls *NOTE*: Press @CTRL+C@ to stop the test web server h3. Connect to a Database * Begin by initializing the database: <pre> ./manage.py migrate </pre> h3. Create Model * Create the data model file: <pre> vi polls/models.py </pre> #* And add the following to create two data models, *Question* and *Choice*: <pre> from django.db import models class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published') def __str__(self): return self.question_text def was_published_recently(self): return self.pub_date >= timezone.now() - datetime.timedelta(days=1) class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) choice_text = models.CharField(max_length=200) votes = models.IntegerField(default=0) def __str__(self): return self.choice_text </pre> * Edit the @www_example_com/settings.py@ file: <pre> vi www_example_com/settings.py </pre> #* And add the *@polls.apps.PollsConfig@* dotted path to the INSTALLED_APPS setting to include the app in our project: <pre> INSTALLED_APPS = [ 'polls.apps.PollsConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ] </pre> * Now create the polls data model migrations to update the database structure: <pre> ./manage.py makemigrations polls </pre> * Then apply the migration: <pre> ./manage.py migrate </pre> h3. Admin Interface * Create an admin user: <pre> ./manage.py createsuperuser </pre> * Edit the admin file for the poll app: <pre> vi polls/admin.py </pre> #* And add the following to make the poll app modifiable in the admin interface <pre> from django.contrib import admin from .models import Question admin.site.register(Question) </pre> * Rerun the development test server: <pre> ./manage.py runserver 0.0.0.0:8000 </pre> #* And open a web browser and go to http://192.168.1.90/admin *NOTE*: Press @CTRL+C@ to stop the test web server h2. Resources * https://docs.djangoproject.com/en/1.10/intro/tutorial01/