一般Django的网络程序开发步骤
- 配置开发的环境
- 初始化项目
- 启动开发服务器
- 创建应用
- 创建View
- 配置访问View的路由
配置项目开发环境
开发一个新的项目,第一步就是配置项目的开发环境。这里使用两个python开发环境的配置工具
- pyenv:Python的版本管理工具
- pipenv:官方推荐的包管理器,和
pyenv
配合可以快速的为每一个项目创建单独的python开发环境。
执行以下命令为教程项目创建python 3.6的开发环境
$ pipenv --python 3.6
安装Django
$ pipenv install django
检查Django的版本号,确认Django安装成功
$ pipenv run python -m django --version
初始化项目
任何一个框架都有特定的文件结构和默认配置。django提供了django-admin
这一命令行工具帮助我们初始化一个django工程的文件结构,并且初始化了一些默认配置。
$ pipenv run django-admin startproject mysite
看一下新创建的project的目录结构
mysite/
manage.p,
mysite/
__init__.py
settings.py
urls.py
wsgi.py
这几个文件的作用:
- 最外面的
mysite
文件夹是django项目的容器,它的名字不会影响django项目的运行,因此可以任意的更改名字。 -
manage.py
: 命令行的辅助工具,用来和改工程进行交互。 - 内部的
mysite
:真正的python package。 -
mysite/settings.py
: django工程的配置文件 -
mysite/url.py
: django工程的路由配置文件 -
mysite/wsgi.py
: WSGI服务器启动django工程的入口文件
开发服务器
网络程序都是需要运行在服务器上面的。我们平常开发的时候需要一个开发服务器,方便我们随时查看代码的更开情况。当然最好还是写单元测试和集成测试。
启动开发服务器的命令:
pipenv run python manage.py runserver
开发服务器启动后,终端会输出如下信息:
默认情况下,开发服务器会运行在http://127.0.0.1:8000地址。
注意的是,刚才启动的服务器只能作为开发使用。在实际部署到生产环境的时候,我们需要使用类似apache的生产环境服务器。
创建投票应用
采用django创建的工程包括两个层级,一个是叫工程,另外一个是工程下面的应用。一个工程可以包含多个应用。
首先在工程目录下创建一个应用
$ pipenv run manage.py startapp polls
现在我们项目的文件目录会变成如下图所示:
创建第一个View
第一步是修改polls/view.js
文件,创建第一个view
每一个view对应一个python的函数,第一个参数是HttpRequest
实例。HttpRequest
在本教程中使用不懂,会在以后的教程中进行介绍。
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
第二部就是配置访问该View的路由路径。路由配置分成两个层级,一个是在应用层配置路由,另外一个是在工程层配置路由。
修改polls/urls.py
配置应用层路由
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
修改mysite/urls.py
配置工程层路由
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
这种分级的路由配置模式有利于我们对应用进行插拔。当我们需要修改、更换或者删除某个应用的时候,我们只需要将工程级路由进行更改即可。
值得注意的是开发服务器具有热更新的功能,任何代码的更新会引起服务器的自动重载。如果你发现服务器没有重载,你也可以使用下面这条命令重新启动开发服务器。
pipenv run python manage.py runserver
使用地址http://localhost:8000/polls/访问新的投票应用。