简化 Django

http://www.oschina.net/translate/simplifying-django

尽管Django的流行和普及, 一些开发者仍然认为她是一个过时的web开发框架, 仅仅适合内容丰富的web程序。 然而现在大多数web程序往往不是富内容的, 这似乎让Django看起来不是最佳选择的web框架。

那么让我们花点时间从现在的web开发实践中重新认识下她吧。

我是小智
我是小智
翻译于 11天前

1人顶

 

顶 翻译的不错哦!

简单清晰的Django

一个web框架主要是帮助web程序生成核心的架构, 以便在其他的项目中重用。 Django正是以此为基础, 快速构建web程序。 Django的核心主要是WSGI程序, 通过处理HTTP请求并返回有意义的HTTP应答。 她提供了各种工具, 像生成URL路由, cookie的处理, 解析表单数据和上传文件。

还有, Django为HTTP应答创建了动态的模板引擎。你可以立马使用, 为了丰富web程序构建体验, 她提供了很多的各种各样的过滤器和标签, 去创建动态的可扩展模板。

我是小智
我是小智
翻译于 11天前

1人顶

 

顶 翻译的不错哦!

通过这些工具, 你能轻松地在Django的项目中创建简单清晰的微型框架。

我们知道有些人喜欢自己造轮子。 我们不是说贬低这种行为, 但是使用Django开发的话会让我们有更少的干扰。 比如, 当你在纠结 Jinja2,, Mako, Genshi, Cheetah的时候, 你可能已经在使用Django已存在的模板引擎。 更少的纠结让我们更多的享受愉快的开发过程。

我是小智
我是小智
翻译于 11天前

1人顶

 

顶 翻译的不错哦!

培训新的Django使用者

在Django和其他的web框架的社区中有一个很大的问题, 就是对新使用者的培训问题。 就像有很多Django使用者是通过Django官网上的创建一个投票程序来学习Django的。 我们很多老道的Django开发者认为它是一个进入Django社区的“通过仪式”。 但是它是学习Django最好的方法吗? 我觉得不是。

目前, 这个投票程序有六个部分。 虽然每个部分都有它的意义, 但是直到第三个你才能写你的视图和构造HTTP应答。 相比较简单的“Hello World”程序在某些流行的python微型框架(像Flask和Bottle)的首页而言, 这太遥远了。 最好的学习方法是当我们学习Django的某一块的时候没有过多的阻碍, 并且能够专注于处理请求和应答的交互上。 新使用者在构建常见的web任务的时候能从框架的其他部分中获得帮助, 像回话管理, 用户验证和内置的admin接口。

我是小智
我是小智
翻译于 11天前

1人顶

 

顶 翻译的不错哦!

那么, 按照我们的意思来构建一个简化版的Django教程:

01 import sys
02   
03 from django.conf import settings
04 from django.conf.urls import patterns
05 from django.http import HttpResponse
06 from django.core.management import execute_from_command_line
07   
08 settings.configure(
09     DEBUG=True,
10     SECRET_KEY='placerandomsecretkeyhere',
11     ROOT_URLCONF=sys.modules[__name__],
12 )
13   
14 def index(request):
15     return HttpResponse('Powered by Django')
16   
17 urlpatterns = patterns('', 
18     (r'^$', index),
19 )
20   
21 if __name__ == "__main__":
22     execute_from_command_line(sys.argv)

 

简单吧。 这段简短的代码是运行Django项目所需要的全部。 让我们开始逐步解释下各部分代码吧。

首先, 我们需要确保引入了HttpResponse, 并且返回我们希望返回的内容。

1 from django.http import HttpResponse
2   
3 def index(request):
4     return HttpResponse('Powered by Django')

 

一般来说, 这段代码应该在view.py里面。 不过在这个简化版的教程中, 我们把Django项目中所有代码放在一个单一的文件。

我是小智
我是小智
翻译于 10天前

1人顶

 

顶 翻译的不错哦!

应用的当前部分与下一部分的完美纽带是链接结构。上面的代码就期望这样的一个url索引,所以我们需要为它创建一个。

1 from django.conf.urls import patterns
2 from django.http import HttpResponse
3   
4 def index(request):
5     return HttpResponse('Powered by Django')
6   
7 urlpatterns = patterns('', 
8     (r'^$', index),
9 )

仅仅通过以上7行代码我们就为应用程序构建好了在Django上运行的基础!现在,让我们完成一些基本设置,使应用程序可以执行起来。

01 import sys
02   
03 from django.conf import settings
04 from django.conf.urls import patterns
05 from django.http import HttpResponse
06   
07 settings.configure(
08     DEBUG=True,
09     SECRET_KEY='placerandomsecretkeyhere',
10     ROOT_URLCONF=sys.modules[__name__],
11 )
12   
13 def index(request):
14     return HttpResponse('Powered by Django')
15   
16 urlpatterns = patterns('', 
17     (r'^$', index),
18 )

你可能已经发现在上面的例子中,我们已经剥离了那些设置,并且尤其是省略了数据库的配置。这些设置将可以作为一个针对新用户进入的门槛,当这些新用户试图确定使用什么数据库时,可能避免出现混乱的情况。当开发一个项目时,我们希望确保自己的工作专注于特定部分,从而降低工作中的阻碍。

只能怪小名
只能怪小名
翻译于 10天前

1人顶

 

顶 翻译的不错哦!

注意:在settings.configure文件里设置随机的 SECRET_KEY以便保护session and cross-site request forgery (CSRF).

由于没有使用 start project命令生成该结构,我们会丢掉manage.pyfile文件.因此需要手工添加相关的manage.pyand信息:

01 import sys
02   
03 from django.conf import settings
04 from django.conf.urls import patterns
05 from django.http import HttpResponse
06 from django.core.management import execute_from_command_line
07   
08 settings.configure(
09     DEBUG=True,
10     SECRET_KEY='placerandomsecretkeyhere',
11     ROOT_URLCONF=sys.modules[__name__],
12 )
13   
14 def index(request):
15     return HttpResponse('Powered by Django')
16   
17 urlpatterns = patterns('', 
18     (r'^$', index),
19 )
20   
21 if __name__ == "__main__":
22     execute_from_command_line(sys.argv)

 

现在可以从命令行启动应用了:

1 $ python project_name.py runserver

 

访问 127.0.0.1:8000, 会看到  “Powered by Django”页面了!

simplifying_django_fig_1

petert
petert
翻译于 11天前

1人顶

 

顶 翻译的不错哦!

看到这里, 你可能要问: “模型和视图在哪呢?”。 在此之前让我们先放松一下。 让我们讨论下Django到底是什么--她是一个包含一系列我们经常需要用到的工具的web框架, 并且你能很容易在项目中引用它们。 接下来我们将介绍如何引入这些工具。 构建一个模板就是个不错的列子。 让我们开始动手吧。

添加模板文件前我们要添加urls和一些必要设置, 要让Django知道模板文件放在哪。 把这些设置添加到文件里吧。

01 import os
02 import sys
03   
04 BASE_PATH = os.path.dirname(__file__)
05   
06 from django.conf import settings
07 from django.conf.urls import patterns, url
08 from django.core.management import execute_from_command_line
09 from django.shortcuts import render
10   
11 settings.configure(
12     DEBUG=True,
13     SECRET_KEY='placerandomsecretkeyhere',
14     ROOT_URLCONF=sys.modules[__name__],
15     TEMPLATE_DIRS=(
16         os.path.join(BASE_PATH, 'templates'),
17     ),
18 )
19   
20 def index(request):
21     return render(request, 'index.html', {'request': request})
22   
23 urlpatterns = patterns('', 
24     url(r'^$', index, name='index'),
25 )
26   
27 if __name__ == "__main__":
28     execute_from_command_line(sys.argv)
我是小智
我是小智
翻译于 10天前

1人顶

 

顶 翻译的不错哦!

你会注意到在顶部我们增加了os.path Python模块的导入。通过这样做,我们已经为新用户创建了一种容易的方式指向他们的项目文件夹。现在我们能在我们的TEMPLATE_DIRS设置中轻松的添加指向模板的路径,并开始体验Django的内置标签和过滤器的优势!

正如你可以看到,通过将创建一个Django应用程序的基础部分分解成较小的部分,我们可以创建一个更简单的方法给内建的新用户。我们需要重新学习怎样让Django在没有ORM和Django管理的时候创建Django应用程序。需要认识到Django的那些内置功能他们真是的是什么。在使用框架时他们不是必须的,如果你感觉他们不是必须的,你并没有失去太多。我们开始使用Django好的部分而不是感觉它的重量,就像我们学习Python的标准库。让我们开始移去过时的东西,看看它的源码,功能真的是很丰富。

因此,基于所有的这些,在轻量的模式中你正在考虑构建一些能够开发什么的应用程序?

posted @ 2014-05-13 16:06  Django's blog  阅读(445)  评论(0)    收藏  举报