zoukankan      html  css  js  c++  java
  • 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 用 点 .

  • 相关阅读:
    HDU 6181 Two Paths【次短路】【模板题】
    POJ 1236 Network of Schools【tarjan算法】【模板题】
    POJ 1236 Network of Schools【tarjan算法】【模板题】
    Tarjan 算法&模板
    Tarjan 算法&模板
    HDU 6168 Numbers【水题】
    HDU 6168 Numbers【水题】
    HDU 4523 湫秋系列故事——安排座位【组合dp】【好题】【思维题】
    HDU 4523 湫秋系列故事——安排座位【组合dp】【好题】【思维题】
    HDU 2087 剪花布条【最长不重复子串】【KMP】【水题】【模板题】
  • 原文地址:https://www.cnblogs.com/gyh04541/p/7900644.html
Copyright © 2011-2022 走看看