django 模型,项目与应用的创建 ,url,views,template ,controller

django  模型,项目与应用的创建 ,url,views,template ,controller

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 用 点 .