web框架的概念

什么是web框架 

  框架,即framework。特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端

 

MVC和MTV模式 

  所谓的 MVC就是把web应用分为模型(M)、控制器(C)、视图(V)三层;他们之间以一种插件似的,耦合的方式连接在一起。 模型负责业务对象与数据库的对象(ORM),视图负责与用户的交互(页面),控制器(C)接受用户的输入调用模型和视图完成用户的请求。

 

控制器(Controller) - 負責轉發請求,對請求進行處理。

 

視圖(View)           

  介面設計人員進行圖形介面設計。用於封裝與應用程式的業務邏輯相關的數據以及對數據的處理方法。「 Model 」有對數據直接存取的權力,例如對數據庫的存取。Model」不依賴「View」和「Controller」,也就是說, Model 不關心它會被如何顯示或是如何被操作。但是 Model 中數據的變化一般會通過一種重新整理機制被公佈。為了實現這種機制,那些用於監視此 Model 的 View 必須事先在此 Model 上註冊,從而,View 可以了解在數據 Model 上發生的改變。

 

模型(Model)          

  程式設計師編寫程式應有的功能(實現演算法等等)、數據庫專家進行數據管理和數據庫設計(可以實現具體的功能)。用於封裝與應用程式的業務邏輯相關的數據以及對數據的處理方法。「 Model 」有對數據直接存取的權力,例如對數據庫的存取。「Model」不依賴「View」和「Controller」,也就是說, Model 不關心它會被如何顯示或是如何被操作。但是 Model 中數據的變化一般會通過一種重新整理機制被公佈。為了實現這種機制,那些用於監視此 Model 的 View 必須事先在此 Model 上註冊,從而,View 可以了解在數據 Model 上發生的改變。

Django中用的是MTV模式

1.Models:一个抽象层,用来构建和操作你的web应用中的数据,模型是你的数据的唯一的、权威的信息源。它包含你所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

from django.db import models
# Create your models here.

class BlogsPost(models.Model):
    title = models.CharField(max_length = 150)
    body = models.TextField()
    timestamp = models.DateTimeField()

 

创建好模型就好了,剩下的由Django完成。Django会根据模型在数据库中创建一个表

2.模板(templates):模板层提供了设计友好的语法来展示信息给用户。使用模板方法可以动态地生成HTML。模板包含所需HTML 输出的静态部分,以及一些特殊的语法,描述如何将动态内容插入。

{% if latest_question_list %}
    <ul>
    {% for question in latest_question_list %}
        <li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
    {% endfor %}
    </ul>
{% else %}
    <p>No polls are available.</p>
{% endif %}

 

3.视图(views):用于封装负责处理用户请求及返回响应的逻辑。视图可以看作是前端与数据库的中间人,他会将前端想要的数据从数据库中读出来给前端。他也会将用户要想保存的数据写到数据库。

#coding=utf-8
from django.shortcuts import render
from blog.models import BlogsPost
from django.shortcuts import render_to_response

# Create your views here.
def index(request):
    blog_list = BlogsPost.objects.all()
    return render_to_response('index.html',{'blog_list':blog_list})

 

查询到BlogsPost数据库里的所有数据,赋值给blog_list变量。

return render_to_response('index.html',{'blog_list':blog_list})

通过render_to_response() 返回给浏览器一个index.html页面,并且将blog_list变量的值也返回给index.html。




posted @ 2019-03-26 10:02  Dandelion-L  阅读(333)  评论(0)    收藏  举报