2.1 KiB
2.1 KiB
First Django App
Target: create a basic poll application, with 2 parts a public site and a admin site
- public site: let's pp view polls and vote
- admin site: let's you(admin) add/change/delete poll
Creating a project
In the source directory, create project by
$ django-admin startproject <project_name>
Constraint on <project_name>
:
- don't use names that conflict with django
- e.g.
django
,test
(test with built-in test file)
- e.g.
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
Explain file structure:
- top-level
mysite/
: container of the project, can be renamed latter w/o affect Django framework manage.py
: cmd-line utility let us to interact (admin) with Django projects.- inner
mysite/
dir: actual Python package for the project.- Importing any package from here: e.g.
mysite.urls
- Importing any package from here: e.g.
mysite/__init__.py
: empty file, tell python start from here.mysite/settings.py
: settings/config for this django project.mysite/urls.py
: URL declarations for this Django pjt; a "table of contents" of this Django website.mysite/asgi.py
: An entry-point for ASGI-compatible webserversmysite/wsgi.py
: Entry-point for WSGI-compatible webservers
The development server
Start server steps:
- cd into outer
mysite/
dir - Start server via:
python manage.py runserver
Outcome:
- A development server is started. So no need to config a production server (e.g. Apache)
- Note: don't use it as production environment.
Creating the Polls app
Projects vs. apps
What’s the difference between a project and an app? An app is a Web application that does something – e.g., a Weblog system, a database of public records or a small poll app. A project is a collection of configuration and apps for a particular website. A project can contain multiple apps. An app can be in multiple projects.
Create a poll app along mysite/
. For what?
$ python manage.py startapp polls
app hierarchy
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py