找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3850|回复: 3

《一起学习Django》

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo 发表于 2016-8-30 16:22:05 | 显示全部楼层 |阅读模式
本帖最后由 mongo 于 2016-8-30 16:28 编辑

Django MTV 设计模式  我们先来研究一个简单点的例子,从后台数据库中显示10本书至前台页面
下面是通过Django来完成以上功能:我们分成4个Python的文件,(models.py ,views.py , urls.py ) 和html模板文件 (latest_books.html )
  1. # models.py (the database tables)

  2. from django.db import models

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


  6. # views.py (the business logic)

  7. from django.shortcuts import render_to_response
  8. from models import Book

  9. def latest_books(request):
  10.     book_list = Book.objects.order_by('-pub_date')[:10]
  11.     return render_to_response('latest_books.html', {'book_list': book_list})


  12. # urls.py (the URL configuration)

  13. from django.conf.urls.defaults import *
  14. import views

  15. urlpatterns = patterns('',
  16.     (r'^latest/, views.latest_books),
  17. )


  18. # latest_books.html (the template)

  19. <html><head><title>Books</title></head>
  20. <body>
  21. <h1>Books</h1>
  22. <ul>
  23. {% for book in book_list %}
  24. <li>{{ book.name }}</li>
  25. {% endfor %}
  26. </ul>
  27. </body></html>
复制代码


先不用关心语法,毕竟只是简单的展示,下面介绍分割的几个py文件
models.py 文件主要用一个 Python 类来描述数据表。 称为 模型(model) 。 运用这个类,你可以通过简单的 Python 的代码来创建、检索、更新、删除 数据库中的记录而无需写一条又一条的SQL语句。


views.py文件包含了页面的业务逻辑。 latest_books()函数叫做视图


urls.py 指出了什么样的 URL 调用什么的视图。 在这个例子中 /latest/ URL 将会调用 latest_books() 这个函数。 换句话说,如果你的域名是example.com,任何人浏览网址http://example.com/latest/将会调用latest_books()这个函数。


latest_books.html 是 html 模板,它描述了这个页面的设计是如何的。 使用带基本逻辑声明的模板语言,如{% for book in book_list %}, {% if %}, {{ variable }}
结合起来,这些部分松散遵循的模式称为模型-视图-控制器(MVC), Django是基于MVC架构的。
为什么称Django框架的设计模式成为MTV模式呢,因为django将mvc的控制器部分交由URLconf来实现。
URLconf机制是使用正则表达式匹配URL,然后调用合适的Python函数。URLconf对于URL的规则没有任何限制,你完全可以设计成任意的URL风格,不管是传统的,RESTful的,或者是另类的。框架把控制层给封装了,无非与数据交互这层都是数据库表的读,写,删除,更新的操作.在写程序的时候,只要调用相应的方法就行了,感觉很方便。程序员把控制层东西交给Django自动完成了。
这种设计模式关键的优势在于各种组件都是 松散结合 的。这样,每个由 Django驱动 的Web应用都有着明确的目的,并且可独立更改而不影响到其它的部分。 比如,开发者 更改一个应用程序中的 URL 而不用影响到这个程序底层的实现。 设计师可以改变 HTML 页面 的样式而不用接触 Python 代码。 数据库管理员可以重新命名数据表并且只需更改一个地方,无需从一大堆文件中进行查找和替换。


本帖子参考Django Book -- http://djangobook.py3k.cn/





回复

使用道具 举报

5

主题

165

帖子

165

积分

版主

Rank: 7Rank: 7Rank: 7

积分
165

热心会员突出贡献优秀版主荣誉管理

mongo  楼主| 发表于 2016-8-30 16:24:02 | 显示全部楼层
我去代码太多 ,只显示了3行
回复 支持 反对

使用道具 举报

50

主题

1057

帖子

1108

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1108

活跃会员热心会员最佳导师默默耕耘突出贡献优秀版主荣誉管理论坛元老

blueelwang 发表于 2016-8-31 16:47:27 | 显示全部楼层
不错呀!Django的手册看这个吧:http://docs.pythontab.com/django/django1.5/
上面的那个手册貌似打不开
回复 支持 反对

使用道具 举报

0

主题

30

帖子

30

积分

版主

Rank: 7Rank: 7Rank: 7

积分
30

活跃会员热心会员突出贡献荣誉管理

鸟笨Andy 发表于 2016-9-1 16:26:03 | 显示全部楼层
{:8_205:}不错
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表