Welcome to Django!

实验简介

Django是一个可以使Web开发工作更加高效愉快的Web开发框架。Django可以让你用最小的代价构建和维护更高质量的Web应用程序。

从好的方面来看,Web开发是一项有趣和充满创造性的事;但是另一方面,Web开发又可能是一项繁琐令人生厌的工作。通过减少重复的部分,Django能让你专注于Web程序的核心,从而让开发更加有趣。为了达到这个目标,Django提供了通用Web开发模式的高度抽象,一些常见任务的快捷方式,还为“如何解决问题”提供了清晰明了的约定。同时,Django尝试留下一些方法,来让你根据自己的需要在framework之外来开发。

关于发音

Django, 应该读作jan go,读音演示 D是不发音的~~~发音的~~~音的~~~的~~~

MVC设计模式

让我们来研究一个简单的例子,通过这个实例,你可以看出用Web框架方式与之前的做法有什么不同。首先,我们将内容分隔到3个Python的文件中models.py、views.py、urls.py 和一个模板文件( latest_books.html )。

models.py (数据库表)

from django.db import models

class Book(models.Model):
name = models.CharField(max_length=50)
pub_date = models.DateField()

views.py (业务逻辑层)

from django.shortcuts import render
from models import Book def latest_books(request):
book_list = Book.objects.order_by('-pub_date')[:10]
return render(request, 'latest_books.html', {'book_list': book_list})

urls.py (URL配置)

from django.conf.urls.defaults import *
import views urlpatterns = patterns('',
(r'^latest/$', views.latest_books),
)

latest_books.html (模板文件)

<html><head><title>Books</title></head>
<body>
<h1>Books</h1>
<ul>
{% for book in book_list %}
<li>{{ book.name }}</li>
{% endfor %}
</ul>
</body></html>

现在,我们不需要太专注语法细节,只需要注意这里实现的方式。 这里要重点提到的是 重点分离 (separation of concerns):

models.py 中用一个Python类来描述一个数据库中的表,被称作 模型 (model)。通过这个类,你可以通过简单的Python代码来对数据库中的记录进行增删改查(创建,检索,更新,删除),而无需你去写一条一条的SQL语句。

views.py 中包含了页面的业务逻辑。 latest_books() 方法叫做 视图 (view)。

urls.py 指定视图和URL的关系,即什么样的URL调用哪个的视图。在这个例子中, /lastest/ URL 会调用 latest_books() 这个方法。换句话说如果你的域名是example.com,任何人访问http://example.com/latest/ 就会调用 latest_books() 。

latest_books.html 是HTML模板,它定义了这个页面的设计,模板中使用了带基本逻辑语句的模板语言,比如 {% for book in book_list %}

这部分代码松散地遵循了模型-视图-控制器(MVC)的设计模式。简单来说,MVC是一种软件开发的方法,它把定义和访问 数据的代码(模型 model)和控制请求逻辑的代码(控制器 controller)和用户接口(视图 view)分割开来。我们会在以后更加深入地讨论MVC。

这个方法最重要的优点在于它的各个部分都是 松耦合 (loosely coupled)的。这样用Django开发的Web程序中每个部分都有它自己单一的目的,并且可以单独地被修改而不会影响到其他部分。比方说,一个程序员可以在不影响底层实现的情况下修改URL;设计师可以不需要接触Python的代码就修改页面的HTML;数据库管理员在重命名数据表之后只需要修改一个地方就可以了,而不需要在一大堆文件中查找替换。

Django的版本

本课程基于Django 1.4

Django的开发尽量保证版本向后兼容,但是仍然可能会添加一些不向后兼容的改变。每个版本的更新通常都会 记录在relase note中,你可以到https://docs.djangoproject.com/en/dev/releases/1.X (X请用相应的版本替换,eg:1.4、1.7)查看。

一点提示

本课程基于《The Django Book》改编,想查看更多的资料: 老版本django book: http://djangobook.py3k.cn/2.0/ 新版本django book(翻译中):http://djangobook-cn.readthedocs.org/en/latest/ 在学习过程中,想了解更多,必须得官方文档啊! https://www.djangoproject.com/

有问题,要提问呀! 社区邮件列表,你值得拥有: https://groups.google.com/forum/#!forum/django-users

Django的一个最大的优势就是她有一群乐于助人的人活跃在Django社区里。 你在Django中遇到的任何问题,从安装,程序设计,数据库设计到部署,都可以在上面寻求帮助。

django-users邮件列表上面有上万的Django用户,活跃着讨论问题。可以到 http://www.djangoproject.com/r/django-users 免费注册。 如果碰到棘手的问题,想要得到及时的回复,可以到Django IRC channel寻求帮助。加入方法是在Freenode IRC network上加入#django。

上面那个链接,一看就是要穿越长城的, 如果能量不足,Django中国社区 :)

《The Django Book》是在Django1.0的基础来的,所以有很多的新特性并没有加入,特别是在模板和模型里边,所以本课程中的东西只是入门而已,请一定去翻看对应的django版本的官方文档,尽管他是英文的。

Django1.4 中文文档(翻译过半)

小结

Django是用Python实现的一个Web开发框架,它遵从MVC模式,能快速地开发Web应用。

Welcome to Django!的更多相关文章

  1. django测试开发-1.开始Hello django!

    用python开发出一个web页面的时候,需要找一个支持python语言的web框架.django框架有丰富的文档和学习资料,也是非常成熟的web开发框架,本篇写一个简单的“hello django! ...

  2. python之Django学习笔记(三)---URL调度/URL路由

    在django中,用户发起url请求消息首先到工程的urls.py中查找是否有匹配的url路径 刚创建好的工程中urls.py只有下面几行代码: from django.contrib import ...

  3. nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    nginx+uWSGI+django+virtualenv+supervisor发布web服务器   导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以 ...

  4. 部署 Django

    补充说明:关于项目部署,历来是开发和运维人员的痛点.造成部署困难的主要原因之一是大家的Linux环境不同,这包括发行版.解释器.插件.运行库.配置.版本级别等等太多太多的细节.因此,一个成功的部署案例 ...

  5. Django第一步

    对于一个web框架,掌握了三部分的内容,就可以说是迈出了第一步. 1. 准备开发环境 2. 创建一个工程,并运行 3. 开发hello world应用 1. 准备环境 首先应该是安装python和dj ...

  6. 12,nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求) 基于wsgi运行的框架 ...

  7. 08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

    一.为什么要用nginx,uwsgi? 1 首先nginx 是对外的服务接口,外部浏览器通过url访问nginx, 2nginx 接收到浏览器发送过来的http请求,将包进行解析,分析url,如果是静 ...

  8. nginx+uWSGI+django+virtualenv+supervisor发布web服务器流程

    导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以及Web应用程序如何链接在一起以处理一个请求,(接收请求,处理请求,响应请求)基于wsgi运行的框架有 ...

  9. 16 . PythonWeb框架之Django

    Web框架简介 Web开发是Python语言应用领域的重要部分,也是目前最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twist ...

随机推荐

  1. Keras官方中文文档:关于Keras模型

    关于Keras模型 Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模型的一种特殊情况. 两类模型有一些方法是相同的: ...

  2. github上的文件比对

    Skip to content          This repository                     Pull requests Issues Marketplace Explor ...

  3. 谈谈MySQL的事务隔离级别

    这篇文章能够阐述清楚跟数据库相关的四个概念:事务.数据库读现象.隔离级别.锁机制 一.事务 先来看下百度百科对数据库事务的定义: 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行.事务处理 ...

  4. Android集成百度地图详细步骤和错误问题

    先看要实现的效果 第一步, 下载SDK,基础配置,百度开发文档很详细,直接附上链接http://lbsyun.baidu.com/index.php?title=androidsdk/guide/cr ...

  5. equals与==号的区别?

    equals与 == 的区别 初学Java的人(me),有很长一段时间对equals()这个方法感到很懊恼,实在是弄不明白到底何时比较的是地址,又什么时候比较内容呢?因为要找工作,要面试.本人通过查阅 ...

  6. ubuntu字符界面怎么设置中文显示和中文输入

    在ubuntu的字符登陆界面,中文显示默认是乱码的,而且也不支持中文输入,解决方法有很多, 1)安装zhcon--解决中文显示乱码的问题. sudo apt-get install zhcon 然后c ...

  7. 十倍效能提升——Web 基础研发体系的建立

    1 导读 web 基础研发体系指的是, web 研发中一线工程师所直接操作的技术.工具,以及所属组织架构的总和.在过去提升企业研发效能的讨论中,围绕的主题基本都是——”通过云计算.云存储等方式将底层核 ...

  8. unity3D加密如何做到防编译?

    先介绍对unity3D程序进行加密的几种方式. Unity3D是一个基于Mono框架的跨平台游戏开发引擎,Unity3D所使用的Mono属于Mono开源项目的分支 在Unity3D中,代码会编译到As ...

  9. smoking的安装和配置

    yum install -y perl perl-Net-Telnet perl-Net-DNS perl-LDAP perl-libwww-perl perl-IO-Socket-SSL perl- ...

  10. Java面试宝典笔记录

    1.一个.java文件中可以有多个类(不是内部类),但是只能有一个public类,且类名和文件同名.(一般不提倡这么写,一类一文件) 2.java保留字:goto, const. 3.访问权限控制 访 ...