1. 安装
- 安装django
pip install django
- 安装cherrypy
pip install cherrypy
- 复制文件cherrypy_startup.py到wsgi.py相同目录下
- 查看cherrypy_startup.py里面的配置项
- 在控制台中运行Python ci\cherrypy_startup.py,启动一个服务
- 浏览器查看网页
- 0.0.0.0—表示所有的ip都监听
2.静态文件支持
- HTML\CSS文件访问
- 正式运行时,一般不用Django(nginx,varnish,cdn等),开发时可以先用Django
- 提倡的做法是与ci文件同一个目录,创建一个static目录(名字可以随便取)
- 在url.py文件进行修改
from django.conf.urls.static import static urlpatterns=[...]+static("/s",document_root="./static")
- 当前是以s开头,匹配到/static中文件除了s后面的文件名字,并且加上后缀名
3.HTM是用于创建网页的标记语言
- HTML:超文本标记语言(Hyper Text Markup Language)
- HTML不是一种编程语言,而是一种标记语言
- 用来描述网页的一种语言
- 浏览器分析HTML从而展现页面的内容(渲染,render)
步骤
* 在静态static文件中创建一个html文件
diango 原理
-
项目目录 mysite/wsgi.py
- 协议wsgi,将Python web 服务器分为sever端和application端,sever端和application端分别实现服务端代码的一部分
- sever端和application端运行在一个Python进程中,sever端接受到http请求后,会调用application端的入口函数的方法,由application端进行处理。
- sever 端负责提供高效的http请求的处理环境(多线程,多进程,协程)
- application端实现具体的处理请求的业务逻辑
- django是application端的框架,并没有提供高效的http请求的处理环境,需要相应的sever端产品(gunicorn,uwsgi,cherrypy)
- wsgi.py 就是给sever端调用的接口文件,里面的变量application指向的对象实现了wsgi接口。
##3. 路由
1. django中的APP
- django中的APP就是一个应用的意思
- 项目可以包含多个app
- 一个项目对应一个网站(生活服务网站)
- 一个APP对应网站的一个应用(二手交易,家政服务)
2.创建一个app
- 执行命令
python manage.py startapp *main*
main 为应用的名字,可以随便取
- http请求
- 访问http://localhost/student
2.0 具体过程
* 请求发送到后台
* wsgi sever 传递给django框架
* django框架查看路由表
* 根据路由表配置,调用相应的函数(方法)处理
2.1 django 允许路由分层,定义子路由,路由表示有优先级顺序的,排在前面的路由优先级高
- 子路由表存放相关条目
- 总路由表用include包含子路由表
- 步骤
- 先在app目录中创建文件url.py,写出子路由表
- 然后修改总路由表文件,包含子路由文件
2.2 如何获取request中的值
使用get方法:使用request的GET方法
使用post方法request.POST.get()
4.用户输入数据
####4.1 html表单
- 用户通过表单提交数据
- 格式
<form> element </form>
- 最常见的元素为input元素:type属性text,radio,submit
- 属性action:后面添加相对地址或者绝对地址
- name属性是表明参数的名字的属性
####4.2 页面样式
4.2.1 html的学习笔记
- 元素是以开始标签/结束标签,例如:
- 大多数html标签可以拥有属性
4.2.2 html中标签,属性,元素的区别
地址参考:https://zhidao.baidu.com/question/183622065.html
* 标签
* 由尖括号包围的关键词,例如:<p>
* 通常是开始标签/结束标签成对出现,中间放值,如果是单独的标签则在标签属性中赋值。例如:`<p>element</p>,<input type="text" value="按钮" />`
* 开始标签和结束标签也被称为开放标签和闭合标签
* 也有单独呈现的标签,如:<img src="百度百科.jpg" />等
* 网页的内容需在<html>标签中,标题、字符格式、语言、兼容性、关键字、描述等
* 属性
- HTML属性为HTML元素提供附件信息。
例如在超链接标签博客园使用了href 来指定超链接的地址.
属性总是以名称/值的形式出现,例如:name = “value”
属性总是在开始标签中定义.
元素
* HTML元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码
* 例如:<p>我是一个段落</p>表示一个html元素.可以看出,一个html元素主要包括html标签和纯文本.标签定义了网页显示的格式,文本表示网页的内容.故此,网页 = html文档,而html文档则是由html元素定义的.
4.3 后端动态产生
- 拼接
- 模板引擎,传入变量渲染出来
- 引擎导入:
from django.template import engines django_engine=engine[''django] template=django_engine.from_string(templt)
数据库开发
WEB开发中的数据库操作
- 目前最为常用的数据库mysql,postgresql
- 服务程序使用相应的客户端连接 访问DB sever
- 本教程使用另一种更简单的数据库(sqlite),没有数据库服务,数据操作被做成库,python内置了sqlite操作库
- Django ORM(object relational mapping)技术
* 简化数据库开发的逻辑,提供了开发的效率
* 屏蔽了不同的数据库库访问的底层细节 - 在setting.py中定义
-
DATABASE={ 'default': { 'ENGINE':'django.db.backends.sqlite3' 'NAME':os.path.join(BASE_DIR,'db.sqlite3') } }
- ENGINE:用来配置数据库驱动,如果使用的是mysql数据库django.db.backends.mysql,并且做相应的数据连接的配置
- NAME:用来添加数据库的地址,相对位置
数据库的配置
- Python自带数据库-sqlite
- 数据库使用各种内容
- 产生相应的数据库操作脚本
- python manage.py makemigrations main
- 执行数据库脚本
- python manage.py migrate
- 如果修改model,再次执行
数据库地址–https://docs.djangoproject.com/en/2.0/ref/databases/
心得
###1. 访问的原理是根据路由文件中的地址,访问view文件中的函数,浏览器读取Html文件,并渲染道浏览器上面。