Install Django

1
pip install Django

查看是否安装成功:

1
python -m django --version

Creating a project

1
django-admin startproject mysite

运行命令将会在当前目录下创建名为mysite的项目,项目名称应避免使用 Python 内置的模块名称或 Django 组件名称,如,django, test等。
mysite项目结构如下:

1
2
3
4
5
6
7
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py

  • mysite:外层mysite目录,只是项目的外壳容器,可以随便重命名,不影响 Django 项目;内层mysite,名称不能更改,因为,当导入这个目录下的内容的时候,会用到这个包名 (如import mysite.urls)。
  • manage.py:Django 项目管理的命令行工具。详细查看django-admin and manage.py
  • mysite/__init__.py:声明 Python 包的空文件。
  • mysite/settings.py:项目配置文件。详细查看Django settings
  • mysite/urls.py:配置项目 URLs 的文件。详细查看URL dispatcher
  • mysite/wsgi.py:WSGI 服务器入口文件。

The development server

在项目的根目录,即外层mysite目录下,执行:

1
python manage.py runserver

可以看到:

1
2
3
4
5
6
7
8
9
10
11
Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

December 06, 2018 - 16:39:26
Django version 2.1.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

现在已经启动了 Django 自带的轻量级的服务器,可以通过地址http://127.0.0.1:8000/来访问。(注意,这个服务器只适合平时开发环境使用。)

  • Changing the port
    默认情况下,runserver命令使用8000端口。但是,你可以启动服务器的时候指定端口:

    1
    python manage.py runserver 8080  # http://127.0.0.1:8080
  • Changing the address
    同样可以指定服务器的访问地址,不过指定地址的时候一定要同时指定端口,如:

    1
    python manage.py runserver 0:8000  # 0.0.0.:8000

    0 为地址0.0.0.0的缩写,如果只指定地址会出错,如python manage.py runserver 127.0.0.1

Creating app

项目中的功能需求可以合理地拆分成一个个功能性的 app,同一个 app 可以重用到不同的项目中,一个项目可以包含多个 app。Django 提供了startapp命令创建 Django 项目的基本 app。
Django 项目的 app 可以放在 Python 路径的任何地方,不过最好放在项目的根目录下 (即外层mysite目录下) 这样不同 app 之间或者和项目包 (内层mysite) 之间导入的时候,就可以作为高层模块直接导入。也就是说,可以直接import app_nameimport mysite

在项目根目录下 (外层mysite),执行:

1
python manage.py startapp polls

成功执行完之后,会在当前目录下生成一个名为polls的 app 包:

1
2
3
4
5
6
7
8
9
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py

Write your first view

接着编写 polls app 的第一个视图页面。在polls/views.py中编辑:

1
2
3
4
5
from django.http import HttpResponse


def index(request):
return HttpResponse("Hello, world. You're at the polls index.")

添加视图到相应 URL,添加 app 的 URL 配置文件polls/urls.py:

1
2
3
4
5
6
7
from django.urls import path
from . import views


urlpatterns = [
path('', views.index, name='index'),
]

再将 polls 的 URL 配置添加到项目的 URL (mysite/urls.py)中去:

1
2
3
4
5
6
7
8
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]

现在,开启服务器python manage.py runserver,然后访问http://localhost:8000/polls/就可以看到上面编辑的视图内容了。