zoukankan      html  css  js  c++  java
  • 第一章 Django介紹篇

    什么是Web框架?

    Django 是 Web框架 中非常出色的新一代成员。那么 Web 框架这个术语的确切含义到底是什么呢?

    要回答这个问题,让我们来看看通过编写标准的CGI程序来开发Web应用,这在大约1998年的时候非常流行。编写CGI Web应用时,你需要自己处理所有的操作,就像你想烤面包,但是都需要自己生火一样。

    但是Web应用远远要复杂很多,这种方法就不再适用,而且你将会要面对很多问题:

    • 当多个动态页面需要同时连接数据库时,将会发生什么?当然,连接数据库的代码不应该同时存在于各个独立的CGI脚本中,所以最踏实的做法是把这些代码重新组织到一个公共函数里面

    • 一个开发人员真的需要去关注如何输出Content-Type以及完成所有操作后去关闭数据库么?此类问题只会降低开发人员的工作效率,增加犯错误的几率。那些初始化和释放相关的工作应该交给一些通用的框架来完成。

    • 如果这样的代码被重用到一个复合的环境中会发生什么?每个页面都分别对应独立的数据库和密码吗?从这点看来,就需要一些环境相关的配置文件。

    • 如果一个Web设计师,完全没有Python开发经验,但是又需要重新设计页面的话,又将发生什么呢?理想的情况是,页面显示的逻辑与从数据库中读取书本记录分隔开,这样 Web设计师的重新设计不会影响到之前的业务逻辑

      以上正是Web框架致力于解决的问题。Web框架为应用程序提供了一套程序框架,这样你可以专注于编写清晰、易维护的代码,而无需从头做起。简单来说,这就是Django所能做的

    MVC 设计模式

    M:模型    V:视图   C:控制器

    是模型-视图-控制器(MVC)的设计模式。简单的说, MVC 是一种软件开发的方法,它把代码的定义和数据访问的方法(模型)与请求逻辑(控制器)还有用户接口(视图)分开来。

    Django来完成MVC功能的例子

     1 # models.py (the database tables)
    2
    3 from django.db import models
    4
    5 class Book(models.Model):
    6 name = models.CharField(maxlength=50)
    7 pub_date = models.DateField()
    8
    9
    10 # views.py (the business logic)
    11
    12 from django.shortcuts import render_to_response
    13 from models import Book
    14
    15 def latest_books(request):
    16 book_list = Book.objects.order_by('-pub_date')[:10]
    17 return render_to_response('latest_books.html', {'book_list': book_list})
    18
    19
    20 # urls.py (the URL configuration)
    21
    22 from django.conf.urls.defaults import *
    23 import views
    24
    25 urlpatterns = patterns('',
    26 (r'latest/$', views.latest_books),
    27 )
    28
    29
    30 # latest_books.html (the template)
    31
    32 <html><head><title>Books</title></head>
    33 <body>
    34 <h1>Books</h1>
    35 <ul>
    36 {% for book in book_list %}
    37 <li>{{ book.name }}</li>
    38 {% endfor %}
    39 </ul>
    40 </body></html>

     

    代码说明:

    • models.py 文件主要用一个 Python 类来描述数据表。称为 模型(model) 。运用这个类,你可以通过简单的 Python 的代码来创建、检索、更新、删除数据库中的记录而无需写一条又一条的SQL语句。

    • view.py 文件的 latest_books() 函数中包含了该页的业务层逻辑。这个函数叫做 视图(view)

    • urls.py 指出了什么样的 URL 调用什么的视图,在这个例子中 /latest/ URL 将会调用 latest_books() 这个函数

    • latest_books.html是 html 模板,它描述了这个页面的设计是如何的。

    django 历史

    2003 年秋天  诞生 

     那时 Lawrence Journal-World 报纸的程序员 Adrian Holovaty 和 Simon Willison 开始用 Python 来编写程序。

    当时他们的 World Online 小组制作并维护当地的几个新闻站点, 并在以新闻界特有的快节奏开发环境中逐渐发展. 这些站点包括有 LJWorld.com、Lawrence.com 和 KUsports.com, 记者(或管理层)要求增加的特征或整个程序都能在计划时间内快速的被建立,这些时间通常只有几天或几个小时。因此为了需要,Adrian 和 Simon 开发了一种节省时间的网络程序开发框架,这是在截止时间前能完成程序的唯一途径。

     

    2005 年的夏天

    当这个框架开发完成时,它已经用来制作了很多个 World Online 的站点。当时 World Online 小组中的 Jacob Kaplan-Moss 决定把这个框架发布为一个开源软件

     

    2005 年的 7 月

    发布并取名为 Django,来源于一个著名的爵士乐吉他演奏家 Django Reinhardt。

     

  • 相关阅读:
    angular2+ 使用ant.design 的 select组件时(nz-select)下拉框没有脱离文档流,直接撑开页面展示的问题
    element 获取table组件的下标
    调幅调频调相位
    Mongoose基于MongoDB建模并设置关联
    Xavier上TensorRT和Pytorch运行时间对比
    理解vue实例的生命周期和钩子函数
    [Vue]组件——.sync 修饰符实现对prop 进行“双向绑定”(子组件向父组件传值)
    vm.$attrs 【Vue 2.4.0新增inheritAttrs,attrs详解】
    (转)vue v-on修饰符
    Vue中的computed属性
  • 原文地址:https://www.cnblogs.com/lhj588/p/2231114.html
Copyright © 2011-2022 走看看