安装
在线安装
在终端直接执行以下命令:
# 使用pip3软件
pip3 install django==2.2.12
# 检查是否安装成功
pip3 list|grep -i django==2.2.12
离线安装
官网下载离线安装包—下载指定版本的Django软件包
tar xf Django-2.2.12.tar.gz # 解压缩
cd Django-2.2.12 # 进入目录
python3 setup.py install # 执行安装
pip3 list|grep -i django==2.2.12 # 检查是否安装成功
Django项目结构
服务配置与启动
创建项目
成功安装Django后,虚拟机终端会有django-admin命令,执行django-admin startproject项目名,即可创建出对应项目文件夹。
[root@localhost projects]# django-admin startproject mysite1
[root@localhost projects]# ls
mysite1
[root@localhost projects]# cd mysite1/
[root@localhost mysite1]# ls
manage.py mysite1
启动服务
启动[测试开发阶段]
-
终端 cd 进入到项目文件夹,例如:cd mysite1;
-
进入到项目文件夹后,执行 python3 manage.py runserver 启动django服务【注:该启动方式下,Django在前台启动服务,默认监听8000端口】
-
切换端口启动服务,重新打开一个终端进行实验,使用5000端口启动Django服务
(testenv) [root@localhost mysite1]# pwd /root/projects/mysite1 (testenv) [root@localhost mysite1]# python3 manage.py runserver # 启动服务 //浏览器访问 http://127.0.0.1:8000,可看到django的启动页面【注:如果想更换端口,可以使用python3 manage.py runserver 端口号】 (testenv) [root@localhost mysite1]# python3 manage.py runserver 5000
- 8000端口的服务访问多次,可以在终端看到请求日志信息,典型的前台服务,服务上线会后台启动
关闭服务
-
方式1:在runserver启动终端下,执行 ctrl+c 终止服务
-
然后浏览器刷新8000端口的服务页面,会刷新失败,表示服务已终止
项目结构解析
mysite1结构
-
manage.py 包含项目管理的子命令
-
python3 manage.py runserver 启动服务
-
python3 manage.py startapp 创建应用
-
python3 manage.py migrate 数据库迁移
-
直接执行 python3 manage.py 可列出所有Django子命令,并且会对命令进行分类
-
testenv) [root@localhost mysite1]# python3 manage.py #django命令分类显示
testenv) [root@localhost mysite1]# tree mytest1
项目同名文件夹—mysite1/mysite1
- _init_.py: 包含了Django项目启动的所有配置项
- wsgi.py: web服务网关的配置文件,Django正式启动时需要用到
- urls.py: 项目的主路由配置,HTTP请求进入Django时,优先调用该文件
- settings.py: 项目的配置文件,包含项目启动时需要的配置
setting.py配置文件
settings.py 包含了Django项目启动的所有配置项 配置分为 公有配置 和 自定义配置 配置项格式,类似于键值对结构: BASE_DIR=‘XXX’ 公有配置—Django官方提供的基础配置
使用Pycharm启动mysite1项目,注意:项目目录在哪里,就在那里open
配置好Pycharm后,查看项目中settings.py文件中的配置项
BASE_DIR
用于绑定当前项目的绝对路径(可动态计算),所有文件夹都可以依赖此路径
#settings.py
import os
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# print(os.path.abspath(__file__))
# print(os.path.dirname("/home/student/projects/mysite1/mysite1/settings.py"))
# print(os.path.dirname("/home/student/projects/mysite1/mysite1"))
# /home/student/projects/mysite1/mysite1/settings.py
# /home/student/projects/mysite1/mysite1
# /home/student/projects/mysite1
DEBUG = True
#True:表示开发环境中使用,开发调试模式
#False:生产环境,上线环境,不会展示具体的报错信息
ALLOWED_HOSTS = [] #类似白名单
#如果DEBUG为True,默认白名单[]中有127.0.0.1,为False时[]为空
#python3 manage.py runserver 0.0.0.0:8000,修改端口
DEBUG
用于配置Django项目的启动模式,两种取值方式:
-
True:表示开发环境中使用,开发调试模式(用于开发测试阶段)
-
检测代码改动后,立刻启动服务
-
如果服务出错,会提示报错界面
-
- False:表示当前项目运行在生产环境中,正式启动模式/上线模式
- 将DEBUG修改为False,然后修改 ALLOWED_HOSTS = ["127.0.0.1"]
- 启动服务,访问不存在页面地址,不对外暴漏报错具体信息
ALLOWED_HOSTS
设置允许访问到本项目的host头值
[] 空列表,表示只有请求头中host值为 127.0.0.1,localhost才能访问本项目,DEBUG=True时生效 ["*"],表示任何请求头的host都能访问到当前项目
例如 [‘192.168.1.3’,’127.0.0.1’]表示只有当前两个host头的值可以访问当前项目,可用于后期配置域名或者公网IP地址,过滤具有攻击性质的IP
LANGUAGE_CODE
用于指定语言配置,英文:en_us,中文:zh-Hans
实验
- 修改LANGUAGE_CODE的值为中文显示
-
启动服务并访问,查看是否修改成功————python3 manage.py runserver
-
浏览器访问 http://127.0.0.1:8000/
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE
用于指定当前服务器端时区,默认是世界标准时区:UTC,可以修改成中国时区:Asia/Shanghai
实验
-
将服务时间改为中国时区,修改 TIME_ZONE 配置
TIME_ZONE = 'Asia/Shanghai'
protocol(协议)
例如:https://tts.tmooc.cn中的 https://
- https 通过安全的HTTPS访问该资源。格式 https://
- http 通过 HTTP 访问该资源。格式 http://
- file 资源是本地计算机上的文件。格式 file://
hostname(主机名)
例如:https://tts.tmooc.cn中的 tts.tmooc.cn
- 是指存放资源的服务器的域名系统(DNS)主机名、域名或者IP地址
port(端口号)
例如:https://tts.tmooc.cn:80中的 80
- 整数,可选,省略时使用方案的默认的端口
- 各种传输协议都有默认的端口号,如https的默认端口是443
path(路由地址)
例如:https://tts.tmooc.cn/video/showVideo 中的 /video/showVideo
- 由零或多个 / 符号隔开的字符串,一般用来表示主机上的一个目录或者文件地址
- 路由地址决定了服务器端如何处理这个请求
query(查询)
例如:/video/showVideo?menuId=123456&version=NSD999 中的 ?menuId=123456&version=NSD999
- 可选,用于给动态网页传递参数,如果有多个参数,用&符号隔开,每个参数的名和值用 = 符号隔开
fragment(信息片段)
例如:/showVideo?menuId=123456&version=NSD999#subject 中的 #subject
- 字符串,用于指定网络资源的片段,类似于书签
Django处理URL请求
浏览器地址栏:http://127.0.0.1:8000/page/1234
-
1.Django从配置文件中根据ROOT_CONF找到主路由文件,默认情况下,该文件在项目同名目录下的urls中;例如mysite1/mysite1/urls.py