django的引入安装
一 django引入
1 web应用介绍
1 什么是web应用
Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,
用户只需要有浏览器即可,不需要再安装其他软件
2 应用的程序的两种模式
应用程序有两种模式C/S、B/S。
C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。
而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。
WEB应用程序一般是B/S模式。
本质上:浏览器是一个socket客户端,服务器是一个socket服务端
2 web框架
a :socket
b:路由跟视图函数匹配关系
c:模板渲染 django: a: 用了别人的wsgiref b:自己写的 c:自己写的
flask: a:用了别人的 b:自己写的 c:用了别人的:jinja2
tornado: a 自己写的 b:自己写的 c:自己写的
Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。
这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。
web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,
就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架
就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率。
3 myserver
import socket soc = socket.socket()
soc.bind(('127.0.0.1', 8001)) soc.listen(5)
while True:
so, addr = soc.accept()
data = so.recv(1024)
so.send(b'HTTP/1.1 200 OK\r\nContent-Type:text/html\r\n\r\n') print(data)
data = str(data, encoding='utf-8')
position = data.split('\r\n')[0].split(' ')[1] if '/index' == position:
with open('index.html','rb') as f:
da=f.read()
so.send(da)
else:
so.send(b'404') so.close() '''
# 请求首行
# GET / HTTP/1.1\r\n
# # 请求头
# Host: 127.0.0.1:8001\r\n
# Connection: keep-alive\r\n
# Cache-Control: max-age=0\r\n
# Upgrade-Insecure-Requests: 1\r\n
# User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36\r\n
# Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
# Accept-Encoding: gzip, deflate, br\r\nAccept-Language: zh-CN,zh;q=0.9\r\n\r\n'
# # 请求体 '''
4 wsgirefServer
from wsgiref.simple_server import make_server
from url import urls
from views import error def run(env, response):
print(env)
response("200 OK", [('Content-type', 'text/html')])
position = env['PATH_INFO']
func = None
for url in urls:
if position == url[0]:
func = url[1]
break
if func:
response = func(env)
else:
response = error(env) return [response.encode('utf-8'),] if __name__ == '__main__':
ser = make_server('127.0.0.1', 8003, run)
ser.serve_forever()
url.py:
from views import *
urls = [
('/index', index),
('/time', time),
('/test', test),
('/user', user),]
views.py:
import datetime
from jinja2 import Template
import pymysql def index(env):
with open('templates/index.html', 'r') as f:
data = f.read()
return data def time(env):
ctime = datetime.datetime.now().strftime('%Y-%m-%d %X')
with open('templates/time.html', 'r') as f:
data = f.read() data = data.replace('@@time@@', ctime)
return data def error(env):
return '404' def test(env):
with open('templates/test.html', 'r') as f:
data = f.read()
tem = Template(data)
response = tem.render(user={'name': 'lqz', 'age': 18}) return response def user(env):
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root',
db='lqz', password='admin')
cur=conn.cursor(pymysql.cursors.DictCursor)
cur.execute('select * from user')
dic=cur.fetchall()
print(dic)
with open('templates/user.html', 'r') as f:
data = f.read()
tem = Template(data)
response = tem.render(user_list=dic)
return response
二 http协议简介
1 http协议简介
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网
(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。
HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。
它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。
HTTP协议工作于客户端-服务端架构为上。
浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。
Web服务器根据接收到的请求后,向客户端发送响应信息。
2 http协议特点
1 基于TCP/IP协议之上的应用层协议
2 基于请求-响应模式
HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,
肯定是先从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应
3 无状态保存
HTTP是一种不保存状态,即无状态(stateless)协议。
HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,
协议对于发送过的请求或响应都不做持久化处理。
使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。
协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,
确保协议的可伸缩性,而特意把HTTP协议设计成 如此简单的。可是,随着Web的不断发展,
因无状态而导致业务处理变得棘手的情况增多了。比如,用户登录到一家购物网站,
即使他跳转到该站的其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能够掌握
是谁送出的请求,需要保存用户的状态。HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能,
于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管理状态了。
4 无连接
无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,
并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
3 http请求协议与响应协议
http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的
请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,
响应端(服务器端)做响应报文。HTTP报文本身是由多行数据构成的字 文本。
请求协议:
请求方式:get与post请求
GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,
如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的请求体中.
GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
GET与POST请求在服务端获取请求数据方式不同。
响应协议:
响应状态码:
状态码的值是当客户端向服务器端发送请求时, 返回的请求结果。借助状态码,用户可以知道
服务器端是正常处理了请求,还是出现了错误。状态码如200 OK,以3位数字和原因组成。
4 URL简介
统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,
是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息
指出文件的位置以及浏览器应该怎么处理它
格式:
协议://IP:端口(80)/路径?name=lqz&age=18
?之前的是请求路径,?之后的是请求数据部分
三 django的安装和简单使用
1 安装
1 pip3 install django==1.11.9
2 pycharm 下安装,选择版本号
2 使用
命令创建项目:django-admin startproject 项目名字
创建app:python3 manage.py startapp app01
注:一个项目里可以有多个app
3 文件目录介绍
-manage.py---项目入口,执行一些命令
-项目名
-settings:全局配置信息
-urls:总路由,请求地址跟视图函数的映射关系
-app名字
-migrations:数据库迁移的记录
-models.py 数据库表模型
-views 视图函数
4 运行项目
pytyon3 manage.py runserver 127.0.0.1:8001
四 补充
1 decode和encode
data = b'111111'
data = str(data, encoding='utf-8')
print(type(data))
data = bytes(data, encoding='utf-8')
print(type(data))
2 pymysql链接数据库
#拿到数据库链接
conn = pymysql.connect(host='127.0.0.1', port=3306,
user='root', db='lqz', password='admin')
#获得游标,并且查询结果数据是字典格式
cur=conn.cursor(pymysql.cursors.DictCursor)
#执行sql
cur.execute('select * from user')
#获取全部查询结果
dic=cur.fetchall()
3 以后写项目
1 不要用中文
2 计算机名不能用中文
3 一个工程,就是一个项目
django的引入安装的更多相关文章
- python Django教程 之 安装、基本命令、视图与网站
python Django教程 之 安装.基本命令.视图与网站 一.简介 Django 中提供了开发网站经常用到的模块,常见的代码都为你写好了,通过减少重复的代码,Django 使你能够专注于 w ...
- Django简介和安装
Django 最开源地方就是可以使用强大第三方插件1,Django默认没有提供对象(Object)级别的权限控制,我们可以通过该Django Guardian 扩展来帮助Django实现对象级别的权限 ...
- 第一步 django的下载安装
django是python众多web框架中比较有名的一个,以大包大揽功能俱全而著名.但作为重量级的web框架,难免性能上回有所损失,不过由于其封装了各种API,在开发的时候会便利许多.所以也是深受欢迎 ...
- Django 2.0 学习(01):Django初识与安装
Django(Python Web框架) Django是一个开放源代码的Web框架,用Python写的.采用了MTV的框架模式,即模型M,模板T和视图V.它最初被开发是用来管理以新闻内容为主的网站,即 ...
- Django介绍、安装配置、基本使用、Django用户注册例子
Django介绍 Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站 DjangoMTV的思想 没有controller ...
- Django 基础一(安装和启动)
在开始跟着本文学习Django进行Web开发之前你需要有一定的python编程基础,会用一些简单的Linux系统命令.如果你对python一无所知,请先去这个网站学习一下python编程的基础 Lin ...
- 部署前准备--使用Mysql之Django Debug Toolbar安装以及配置
python -c "import django ;print(django.__path__);" 查看python的全局配置 vi /usr/local/lib/python3 ...
- Django xadmin引入DjangoUeditor
Django xadmin引入DjangoUeditor 版本:python3.6.1,Django1.11.1 DjangoUeditor下载地址:https://github.com/twz915 ...
- 在单文件组件中,引入安装模块里的css的2种方式:script中引入、style中引入
在单文件组件中,引入安装模块里的css的2种方式:script中引入.style中引入 1.script中引入 <script> import 'bulma/css/bulma.css' ...
随机推荐
- Codeforces Round #620 (Div. 2)F2
题意:给出n,和m表示有n天,m块区域,每块区域都有一定数论的动物数量,k表示可以在这一天中观察[x,max(x+k-1,m)]的区域内的动物,有俩台相机,一台只能在偶数天用,另一台则是在奇数天用,每 ...
- tkinter对话框和窗体
1.标准对话框(tkinter.messagebox) 常用标准对话框 tkinter.messagebox.askokcancel tkinter.messagebox.askquestiontki ...
- SQL 2005 带自增列 带外键约束 数据导入导出
1,生成建表脚本 选中要导的表,点右键-编写表脚本为-create到 ,生成建表脚本 2,建表(在新库),但不建外键关系 不要选中生成外键的那部分代码,只选择建表的代码 3,导数据,用SQL STU ...
- Python笔记_第四篇_高阶编程_再议装饰器和再议内置函数
1. 概述: 我们在前面用了很多的装饰器这个工具的方法.这个位置要系统的讲一下装饰器. 1.2 为什么需要装饰器. 装饰器本质是一个Python函数,它可以让其他函数在不需要任何代码变动的前提下增加额 ...
- MyBatis从入门到精通(第6章):MyBatis 高级查询->6.1.2高级结果映射之一对多映射
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.3.1 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的 ...
- 黑马IDEA版javaweb_2-2MySQL
今日内容 数据库的基本概念 MySQL数据库软件 安装 卸载 配置 SQL 数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓 ...
- java 中static关键字注意事项
1.内存中存放的位置:(static修饰的方法和属性保存在方法区中,但是方法区也是堆的一部分) 内存的分区 2.什么样的属性可以定义为静态数据 例如: class person{ public Str ...
- ZJNU 1333 - 第二题 blocks--中高级
因为放一个就需要判断一次,每一次跑一遍全图bfs显然是不现实的 又因为点只有三种,黑白无 所以可以用并查集优化 添加一个棋子就判断周围四个的组别情况 注意出现的情况与答案关系之间的判别 /* Writ ...
- 关于Linux常用命令的使用
Linux常用命令 Linux centos常用镜像下载链接:http://mirror.centos.org/centos 一.关于yum 1.下载rpm包并存放至某个路径 命令:#yum inst ...
- 十大经典排序算法(Javascript实现)
前言 总括: 本文结合动图详细讲述了十大经典排序算法用Javascript实现的过程. 原文博客地址:十大经典排序算法 公众号:「菜鸟学前端」,回复「666」,获取一揽子前端技术书籍 人生有情泪沾衣, ...