1,web框架
框架--framework,是为解决一个问题儿设计一个有约束性的支持结构,可以快速的开发系统,
对于所有的web框架,本质就是一个sock的服务端,而浏览器就是一个sock客户端。
WSGI,既web server gateway interface ,web服务网关接口,客户端所有的请求都要先经过wsgi,底层所有的tcp/ip,http等协议,都已经封装好,wsgi提供了统一的接口,
在wsgi 中做了对http的解析和组装,request里包含了请求的数据,
django是用python语言编写的,依赖于python的环境
安装django ,pip install django ,执行命令后,在Python/Script目录下,就存在一个django.admin.exe 文件,
===============
2.mtv 和mvc 模式
model,是与数据库交互
template ,进行模块的渲染,显示前端的内容
views ,视图,逻辑代码,实现url与执行函数的调用,
controller ,控制路由分发,
----
MVC模式就是把web应用分为model(模型),负责与数据库的交互,views(视图)负责与页面的交互,controller(控制)负责用户的输入调用模型和视图完成的用户的请求,
---
MTV 模型:
model (模型):负责业务对象与数据库(ORM)
template (模板); 负责前端页面的数据显示
view (视图): 业务逻辑,调用template与model
请求 流程:
客户端发起请求,经过wsgi,url匹配到路径,调用对应的view函数, view执行逻辑代码,到数据库model 增删改查数据,model从数据库拿到数据后,返回给view,view再给template进行渲染显示,用户得到数据,请求结束。
==================
django的命令工具
创建一个django项目
,找到要在那个文件下创建,右键打开cmd, 执行 django-admin startprojiect mysite(项目名称)
mysite文件里包含了manage.py 是与django进行交互的命令脚本文件,
再项目里创建一个应用 python manage.py startapp app01 .,如果允许次应用 python manage.py runserver 8800(端口)
========
关于视图函数的返回值
from django.shortcuts import render ,redirect ,HttpResponse
return HTTPResponse(‘登录成功’) ,HttpResponse是一个类,实例化一个是一个字符串,
return render(request ,‘index.html‘,) render 渲染的字符串(源代码显示HttpResponse),request参数必须要有,不走路径,、
return redirect(‘/index/’)是跳转,要走一次视图函数index ,走一次路径,
=====
url.py 中,controller控制着路由分发,
列表是元组形式,可以有多个,前面是正则匹配,后面是映射路由函数,
^ 是以什么开头,$ 是以什么结尾,不写 ^ 就是包含的意思,
urlpatterns = [
url(r‘^index/$‘,view.index ),
url(r ‘ (\d{4})/$‘ ,year_query) ,(无名分组匹配,(\d{4})会作为一个参数传给year_query,所以在views.py文件中 写year_query函数时,要传一个参数(request,\d{4})
url (r ‘(?P<year>\d{4}/?P<month>\d{2})‘,year_query),(有名分组,传参时不用考试位置,
]
urlpatterns =[ url (正则表达式,view视图函数,参数,别名),]
url 的别名应用
urlpatterns = [url (r‘^reg/‘,regs,name=register,],,当url的路径更改时,视图函数的名字不需要更改,register别名对应新url的名字,也就是,路径原来是reg ,现在改成了register, 视图函数的别名还是可以映射,继续执行,
======
include 路由分发
当一个项目中,有多个应用,多个APP,每个APP都有自己url,就可以写到自己的url.py 文件中,用到include,
在全局的url.py 文件中,
from django.conf.urls import url.include
urlpatterns = [
url (r ‘^blog/‘,include(‘blog.urls‘)),
] blog 是一个应用,匹配到blog,分发找到blog下面的url
=====
view 视图函数,包含了2个对象,request,和 response,
template 模板包含了 {{ 变量 }} ,{% 标签 %},
{% for %}
{% end %}
{%if %}
{% elif %}
{% endif %}
模板语言的深度查询 句点号 . 点 在python语言中,用【】取每一个值, template 用 点 .