简化Python的Django框架代码的一些示例
那么让我们花点时间从现在的web开发实践中重新认识下她吧。
简单清晰的Django
一个web框架主要是帮助web程序生成核心的架构, 以便在其他的项目中重用。 Django正是以此为基础, 快速构建web程序。 Django的核心主要是WSGI程序, 通过处理HTTP请求并返回有意义的HTTP应答。 她提供了各种工具, 像生成URL路由, cookie的处理, 解析表单数据和上传文件。
还有, Django为HTTP应答创建了动态的模板引擎。你可以立马使用, 为了丰富web程序构建体验, 她提供了很多的各种各样的过滤器和标签, 去创建动态的可扩展模板。
通过这些工具, 你能轻松地在Django的项目中创建简单清晰的微型框架。
我们知道有些人喜欢自己造*。 我们不是说贬低这种行为, 但是使用Django开发的话会让我们有更少的干扰。 比如, 当你在纠结 Jinja2,, Mako, Genshi, Cheetah的时候, 你可能已经在使用Django已存在的模板引擎。 更少的纠结让我们更多的享受愉快的开发过程。
培训新的Django使用者
在Django和其他的web框架的社区中有一个很大的问题, 就是对新使用者的培训问题。 就像有很多Django使用者是通过Django官网上的创建一个投票程序来学习Django的。 我们很多老道的Django开发者认为它是一个进入Django社区的“通过仪式”。 但是它是学习Django最好的方法吗? 我觉得不是。
目前, 这个投票程序有六个部分。 虽然每个部分都有它的意义, 但是直到第三个你才能写你的视图和构造HTTP应答。 相比较简单的“Hello World”程序在某些流行的python微型框架(像Flask和Bottle)的首页而言, 这太遥远了。 最好的学习方法是当我们学习Django的某一块的时候没有过多的阻碍, 并且能够专注于处理请求和应答的交互上。 新使用者在构建常见的web任务的时候能从框架的其他部分中获得帮助, 像回话管理, 用户验证和内置的admin接口。
那么, 按照我们的意思来构建一个简化版的Django教程:
import sys from django.conf import settings from django.conf.urls import patterns from django.http import HttpResponse from django.core.management import execute_from_command_line settings.configure( DEBUG=True, SECRET_KEY='placerandomsecretkeyhere', ROOT_URLCONF=sys.modules[__name__], ) def index(request): return HttpResponse('Powered by Django') urlpatterns = patterns('', (r'^$', index), ) if __name__ == "__main__": execute_from_command_line(sys.argv)
简单吧。 这段简短的代码是运行Django项目所需要的全部。 让我们开始逐步解释下各部分代码吧。
首先, 我们需要确保引入了HttpResponse, 并且返回我们希望返回的内容。
from django.http import HttpResponse def index(request): return HttpResponse('Powered by Django')
一般来说, 这段代码应该在view.py里面。 不过在这个简化版的教程中, 我们把Django项目中所有代码放在一个单一的文件。
应用的当前部分与下一部分的完美纽带是链接结构。上面的代码就期望这样的一个url索引,所以我们需要为它创建一个。
from django.conf.urls import patterns from django.http import HttpResponse def index(request): return HttpResponse('Powered by Django') urlpatterns = patterns('', (r'^$', index), )
仅仅通过以上7行代码我们就为应用程序构建好了在Django上运行的基础!现在,让我们完成一些基本设置,使应用程序可以执行起来。
import sys from django.conf import settings from django.conf.urls import patterns from django.http import HttpResponse settings.configure( DEBUG=True, SECRET_KEY='placerandomsecretkeyhere', ROOT_URLCONF=sys.modules[__name__], ) def index(request): return HttpResponse('Powered by Django') urlpatterns = patterns('', (r'^$', index), )
你可能已经发现在上面的例子中,我们已经剥离了那些设置,并且尤其是省略了数据库的配置。这些设置将可以作为一个针对新用户进入的门槛,当这些新用户试图确定使用什么数据库时,可能避免出现混乱的情况。当开发一个项目时,我们希望确保自己的工作专注于特定部分,从而降低工作中的阻碍。
注意:在settings.configure文件里设置随机的 SECRET_KEY以便保护session and cross-site request forgery (CSRF).
由于没有使用 start project命令生成该结构,我们会丢掉manage.pyfile文件.因此需要手工添加相关的manage.pyand信息:
import sys from django.conf import settings from django.conf.urls import patterns from django.http import HttpResponse from django.core.management import execute_from_command_line settings.configure( DEBUG=True, SECRET_KEY='placerandomsecretkeyhere', ROOT_URLCONF=sys.modules[__name__], ) def index(request): return HttpResponse('Powered by Django') urlpatterns = patterns('', (r'^$', index), ) if __name__ == "__main__": execute_from_command_line(sys.argv)
现在可以从命令行启动应用了:
$ python project_name.py runserver
访问 127.0.0.1:8000, 会看到 “Powered by Django”页面了!
看到这里, 你可能要问: “模型和视图在哪呢?”。 在此之前让我们先放松一下。 让我们讨论下Django到底是什么--她是一个包含一系列我们经常需要用到的工具的web框架, 并且你能很容易在项目中引用它们。 接下来我们将介绍如何引入这些工具。 构建一个模板就是个不错的列子。 让我们开始动手吧。
添加模板文件前我们要添加urls和一些必要设置, 要让Django知道模板文件放在哪。 把这些设置添加到文件里吧。
import os import sys BASE_PATH = os.path.dirname(__file__) from django.conf import settings from django.conf.urls import patterns, url from django.core.management import execute_from_command_line from django.shortcuts import render settings.configure( DEBUG=True, SECRET_KEY='placerandomsecretkeyhere', ROOT_URLCONF=sys.modules[__name__], TEMPLATE_DIRS=( os.path.join(BASE_PATH, 'templates'), ), ) def index(request): return render(request, 'index.html', {'request': request}) urlpatterns = patterns('', url(r'^$', index, name='index'), ) if __name__ == "__main__": execute_from_command_line(sys.argv)
你会注意到在顶部我们增加了os.path Python模块的导入。通过这样做,我们已经为新用户创建了一种容易的方式指向他们的项目文件夹。现在我们能在我们的TEMPLATE_DIRS设置中轻松的添加指向模板的路径,并开始体验Django的内置标签和过滤器的优势!
正如你可以看到,通过将创建一个Django应用程序的基础部分分解成较小的部分,我们可以创建一个更简单的方法给内建的新用户。我们需要重新学习怎样让Django在没有ORM和Django管理的时候创建Django应用程序。需要认识到Django的那些内置功能他们真是的是什么。在使用框架时他们不是必须的,如果你感觉他们不是必须的,你并没有失去太多。我们开始使用Django好的部分而不是感觉它的重量,就像我们学习Python的标准库。让我们开始移去过时的东西,看看它的源码,功能真的是很丰富。
因此,基于所有的这些,在轻量的模式中你正在考虑构建一些能够开发什么的应用程序?
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论