1、创建虚拟环境
mkvirtualenv -p python3 django_py3
虚拟环境相关安装操作命令参考个人相关博客:
https://blog.csdn.net/Lovehanxiaoyan/article/details/86365424
2、安装Django
pip install django==1.11.11(等号后面是版本号)
3、创建工程
django-admin startproject 工程名称
例如:想要在桌面的code目录中创建一个名为demo的项目工程,可执行如下命令:
cd ~/Desktop/code
django-admin startproject demo
4、工程目录说明
与项目同名的目录,此处为demo。
settings.py 是项目的整体配置文件。
urls.py 是项目的URL配置文件。
wsgi.py 是项目与WSGI兼容的Web服务器入口。
manage.py 是项目管理文件,通过它管理项目。
5、运行开发服务器
python manage.py runserver
可以不写IP和端口,默认IP是127.0.0.1,默认端口为8000。
在浏览器中输入网址“127.0.0.1:8000”便可看到效果。
6、创建子应用
在django中,创建子应用模块目录仍然可以通过命令来操作,即
python manage.py startapp 子应用名称
例如,在刚才创建的demo工程中,想要创建一个用户users子应用模块,可执行:
cd ~/Desktop/code/demo
python manage.py startapp users
此时的项目目录结构为:
admin.py 文件跟网站的后台管理站点配置相关。
apps.py 文件用于配置当前子应用的相关信息。
migrations 目录用于存放数据库迁移历史文件。
models.py 文件用户保存数据库模型类。
tests.py 文件用于开发测试用例,编写单元测试。
views.py 文件用于编写Web应用视图。
7、注册安装子应用
创建出来的子应用目录文件虽然被放到了工程项目目录中,但是django工程并不能立即直接使用该子应用,需要注册安装后才能使用。
在工程配置文件settings.py中,INSTALLED_APPS项保存了工程中已经注册安装的子应用,初始工程中的INSTALLED_APPS如下:
注册安装一个子应用的方法,即是将子应用的配置信息文件apps.py中的Config类添加到INSTALLED_APPS列表中。
例如,将刚创建的users子应用添加到工程中,可在INSTALLED_APPS列表中添加’users.apps.UsersConfig’。
8、创建视图
打开刚创建的users模块,在views.py中编写视图代码。
from django.http import HttpResponse
def index(request):
"""
index视图
:param request: 包含了请求信息的请求对象
:return: 响应对象
"""
return HttpResponse("hello the world!")
说明:
视图函数的第一个传入参数必须定义,用于接收Django构造的包含了请求数据的HttpReqeust对象,通常名为request。
视图函数的返回值必须为一个响应对象,不能像Flask一样直接返回一个字符串,可以将要返回的字符串数据放到一个HTTPResponse对象中。
9、定义路由
在users/urls.py文件中定义路由信息。
from django.conf.urls import url
from . import views
# urlpatterns是被django自动识别的路由列表变量
urlpatterns = [
# 每个路由信息都需要使用url函数来构造
# url(路径, 视图)
url(r'^index/$', views.index),
]
在工程总路由demo/urls.py中添加子应用的路由数据。
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls), # django默认包含的
# 添加
url(r'^users/', include('users.urls')),
或
url(r'^users/', include(users.urls)), # (import users.urls # 先导入应用的urls模块)
]
10、本地语言与时区
在settings.py中修改如下:
LANGUAGE_CODE = 'zh-hans' # 语言
TIME_ZONE = 'Asia/Shanghai' # 时区