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”页面了!

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的标准库。让我们开始移去过时的东西,看看它的源码,功能真的是很丰富。

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

简化 Django的更多相关文章

  1. django 用model来简化form

    django里面的model和form其实有很多地方有相同之处,django本身也支持用model来简化form 一般情况下,我们的form是这样的 from django import forms ...

  2. Django 修改视图文件(views.py)并加载Django模块 + 利用render_to_response()简化加载模块 +locals()

    修改视图代码,让它使用 Django 模板加载功能而不是对模板路径硬编码.返回 current_datetime 视图,进行如下修改: from django.template.loader impo ...

  3. Django学习路31_使用 locals 简化 context 写法,点击班级显示该班学生信息

    urls 中 进行注册 url(r'grades',views.grades) views 中编写函数 def grades(request): grades_list = Grade.objects ...

  4. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:祝大家新年快乐,这次带来<D ...

  5. [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)

    前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...

  6. Django基础之wsgi

    Django 一 什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演 ...

  7. Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点

    开发一个简单的BBS论坛 项目需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被 ...

  8. 【django】京东等大型网站的混合搜索是怎么实现的?

    混合搜索在各大网站如京东.淘宝都有应用,他们的原理都是什么呢?本博文将为你介绍它们的实现过程. 混合搜索的原理,用一句话来说就是:关键字id进行拼接. 混合搜索示例: 数据库设计: 视频方向: cla ...

  9. python 学习笔记十七 django深入学习二 form,models

    表单 GET 和 POST 处理表单时候只会用到GET 和 POST 方法. Django 的登录表单使用POST 方法,在这个方法中浏览器组合表单数据.对它们进行编码以用于传输.将它们发送到服务器然 ...

随机推荐

  1. centos安装g++

    安装: yum -y install gcc automake autoconf libtool make 安装g++: yum install gcc gcc-c++

  2. 搬移到GitHub Page啦~

    GitHub: https://github.com/BOT-Man-JL/ Page: https://BOT-Man-JL.github.io/

  3. SA密钥长度、明文长度和密文长度

    本文介绍RSA加解密中必须考虑到的密钥长度.明文长度和密文长度问题,对第一次接触RSA的开发人员来说,RSA算是比较复杂的算法,RSA的复杂度是因为数学家把效率和安全也考虑进去的缘故. 本文先只谈密钥 ...

  4. JMeter 使用

    Jmeter工具和其他性能工具在原理上完全一致,工具包含4个部分: (1)负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为. (2)用户运行器:通常是一个脚本运行引擎,用户运行器附加 ...

  5. ASP.NET MVC 第五回 ActionResult的其它返回值

    我们上边所看到的Action都是return View();我们可以看作这个返回值用于解析一个aspx文件.而它的返回类型是ActionResult如 public ActionResult Inde ...

  6. Weex 标签控件

    1.滚动组件 <template> <scroller> <div repeat="{{list}}"> <text>{{name} ...

  7. WPF Binding值转换器ValueConverter使用简介(二)-IMultiValueConverter

    注: 需要继承IMultiValueConverter接口,接口使用和IValueConverter逻辑相同. 一.MultiBinding+Converter 多值绑定及多值转换实例 当纵向流量大于 ...

  8. C#Socket编程socket.Connect权限出错问题及解决

    最近使用Vs2010编写Socket程序,客户端在调用socket.Connect()时,总是出现: 请求“System.Net.SocketPermission, System, Version=4 ...

  9. [o] duplicate column name: _id 问题解决

    Android下使用SQLite数据库,报错:duplicate column name: _id 数据库文件下有两列数据的名称一样,原因是定义数据类型时有重复,如,我的定义: //复制上一行增加TY ...

  10. Web性能压力测试之Webbench使用详解

    Webbench是知名的网站压力测试工具,它是由Lionbridge公司(http://www.lionbridge.com)开发.Webbench能测试处在相同硬件上,不同服务的性能以及不同硬件上同 ...