开源web框架django知识总结(一)

     阅读:66

开源web框架django知识总结(一)

django起源:

1.2005年发布,采用python语言编写的开源web框架

2.早期的时候django主要做新闻和内容管理的

3.重量级的python web框架,django配备了常用的大部分组件

组件:

包含组件如下:

1.基本配置文件/路由系统

2.模型层(M)/模板层(T)/视图层(V)

3.Cookies和Session

4.Admin后台管理

用途:

1、网站/微信公众号/小程序后端开发

浏览器—>http请求—>django

2、人工智能平台融合
在这里插入图片描述

版本:

1.django官网 http://www.djangoproject.com

2.中文版:https://docs.djangoproject.com/zh-hans/3.2/

3.django中文文档参考网站 http://yiyibooks.cn/

4.最新版本3.x 当前教学版本 2.2.5

在这里插入图片描述

安装:

1.支持python的版本-3.5,3.6,3.7,3.8

2.在线安装

​ (1)虚拟机执行 sudo pip3 install django==2.2.5

​ (2)检查是否成功 sudo pip3 freeze|grep -i ‘Django’ # -i 参数,不区分大小写

3.离线安装 - 官网下载离线安装包

​ (1)将安装包复制到虚拟机

​ (2)解压缩 tar -xvf Django-2.2.5.tar.gz

​ (3)进入目录 cd Django-2.2.5

​ (4)执行安装 sudo python3 setup.py install

​ (5)检查是否成功 sudo pip3 freeze|grep -i ‘Django’

注:如果在Ubuntu下pip安装不了(能ping通外网),解决方案:

cd ~/.pip
# 如果不存在.pip则创建目录
mkdir ~/.pip
cd ~/.pip
 
touch pip.conf
sudo gedit ~/.pip/pip.conf

# 在pip.conf中写入如下内容:即可 
 
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/ 
[install]
trusted-host = pypi.tuna.tsinghua.edu.cn

django项目结构

创建项目:

​ 。成功安装Django后,虚拟机终端会有django-admin命令

​ 。执行django-admin startproject 项目名 即可创建出对相应项目文件夹

​ 。例如 终端执行 django-admin startproject mysite1 则创建出mysite1项目
工程创建和配置
1)创建目录

mkdir df17_pro
cd df17_pro

2) 创建虚拟环境,安装Django框架``

mkvirtualenv -p python3 df17
pip install django==2.2.5

虚拟环境删除命令,注意不能在当前所在的虚拟环境,删除本环境:rmvirtualenv 环境名

3)创建Django工程

django-admin startproject django_pro

4)配置pycharm项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

启动【测试开发阶段】

​ 1、终端cd进入到项目文件夹,例如 cd mysite1

​ 2、进入到项目文件夹后,执行 python3 manage.py runserver 启动django服务【注:该启动方式下,Django在前台启动服务,默认监听8000端口】

​ 3、浏览器访问 http://127.0.0.1:8000可以看到django的启动页面

​ 【注:如果想更换端口,则可以用 python3 manage.py runserver 端口号】

关闭服务:

方式1:在runserver启动终端下

​ 。执行 Ctrl +c 可关闭Django服务

方式2:在其它终端下

​ 。执行sudo lsof -i:8000 查出Django的进程id

​ 。执行kill -9 对应Django进程id

启动常见问题

。问题:启动时报错

Error:That port is already in use.

。问题原因:端口已被占用,证明当前Django启动时,默认监听的8000端口已被其它进程占用了。

。解决方案:参考关闭服务

结构解析:

在这里插入图片描述

manage.py

manage.py 包含项目管理的子命令,如:

。python3 manage.py runserver 启动服务

。python3 manage.py startapp 创建应用

。python3 manage.py migrate 数据库迁移

。…

。直接执行 python3 manage.py 可列出所有的Django子命令

项目同名文件夹

项目同名文件夹 -mysite1/mysite1

_init__ : Python包的初始化文件
wsgi.py : WEB服务网关的配置文件 -Django正式启动时,需要用到
urls.py : 项目的主路由配置 -HTTP请求进入Django时,有限调用该文件
settings.py : 项目的配置文件 -包含项目启动时需要的配置

settings.py

。settings.py 包含了Django项目启动的所有配置项

。配置项分为:公有配置自定义配置

。配置项格式例: BASE_DIR = ‘XXXX’

。公有配置 -Django官方提供的基础配置

​ http://docs.djangoproject.com/en/2.2/ref/settings/

。使用pycharm打开settings.py查看

公有配置

ALLOWED_HOSTS

示例:如果要在局域网其它主机也能访问此主机的Django服务,启动方式如下:

​ python3 manage.py runserver 0.0.0.0:5000

​ 指定网络设备,如果内网环境下其它主机想正常访问该站点,需加ALLOWED_HOST=[‘内网ip’]

BASE_DIR

​ 用于绑定当前项目的绝对路径(动态计算出来的),所有文件夹都可以依赖此路径

DEBUG

​ 用于配置Django项目的启动模式,取值:

​ True : 表示开发环境中使用 开发调试模式(用于开发中)

​ False: 表示当前项目运行在生产环境中

ALLOWED_HOST

​ 设置允许访问到本地项目的host头值

​ [] 空列表,表示只有请求投中host为127.0.0.1,localhost能访问本地项目 -DEBUG = True 时有效

​ [’*’],表示任何请求头的host都能访问到当前项目

​ [‘192.168.1.3’,‘127.0.0.1’] 表示只有当前两个host头的值能访问当前项目

**INSTALLED_APPS **:指定当前项目中安装的应用列表

MIDDLEWARE:用于注册中间件

TEMPLATES:用于指定模板的配置信息

DATABASRS:用于指定数据库的配置信息

LABGUAGE_CODE:用于指定语言配置 英文:“en-us” 中文:“zh-Hans”

TIME_ZONE:用于指定当前服务器端时区 世界标准时间:“UTC” 中国时区:“Asia/Shanghai"

ROOT_URLCONF:用于配置主url配置 ‘mysite1.url’

自定义配置

settings.py中也可以添加开发人员自定义的配置

配置建议:名字尽量个性化 ,以防覆盖掉公有配置

​ 例如:ALIPAY_KEY = ‘XXXXXX’

settings.py中的所有配置项,都可以按需的在代码中引入

引入方式:from django.conf import settings
在这里插入图片描述

url和视图函数

URL 结构

定义:即统一资源定位符 Uniform Resource Locatoe

作用:用来表示互联网上某个资源的地址

URL的一般语法格式为(注:[]代表其中的内容可省略):

protocol://hostname[:port]/path[?query][#fragment]
http://tts.tmooc.cn/video/showVideo?menuld=657421&version=AID999#subject

protocol(协议) http://tts.tmooc.cn

​ http 通过HTTP访问该资源。格式 http://

​ https 通过安全的HTTPS访问该资源。格式 https://

​ file 资源时本地计算机上的文件。格式 file:///

hostname(主机名) http://tts.tmooc.cn

​ 是指存放资源的服务器的域名系统(DNS)主机名、域名或IP地址

port(端口号) http://tts.tmooc.cn:80

​ 整数,可选,省略时使用方案的默认端口

​ 各种传输协议都有默认的端口号,如http的默认端口号为80

path(路由地址) http://tts.tmooc.cn/video/showVideo

​ 由零或多个"/"符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。路由地址决定了服务器段如何处理这个请求。

query(查询) /video/showVideo?menuld=657421&version=AID999

​ 可选,用于给动态网页传递参数,可由多个参数,用”&“符号隔开,每个参数的名和值用”=“符号隔开。

fragment(信息片段) version=AID999#subject

​ 字符串,用于指定网络资源中的片段。例如一个网页中由多个名词解释,可使用fragment直接定位到某一名词解释。

Django如何处理url的请求

浏览器 地址栏: http://127.0.0.1:8000/page/2003/

.1 、Django从配置我呢见中,根据ROOT_URLCONF找到主路由文件;默认情况下,该文件再项目同名目录下的urls;例如:mysite1/mysite1/urls.py

.2 、Django加载主路由文件中的urlpatterns变量[包含很多路由的数组]

.3、依次匹配urlpatterns中的path,匹配到第一个适合的终端后续匹配

.4、匹配成功 - 调用对应的视图函数处理请求,返回响应

.5、匹配失败 - 返回404响应
在这里插入图片描述
视图函数

视图函数是用于接收一个浏览器请求(HttpRequest对象)并通过HttpResponse对象返回响应的函数。此函数可以接受浏览器请求并根据业务逻辑返回相应的响应内容给浏览器

语法:def xxx_view(request[,其它参数…]):

​ return HttpResponse对象
在这里插入图片描述
views.py

from django.http import HttpResponse

def pagg1_view(request):
    html = "<h1>这是我的第一个页面</h1>"
    return HttpResponse(html)

urls.py

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('page/2003/',views.pagg1_view),

]