Python+Django+SAE系列教程9-----Django的视图和URL

原创 2014年04月21日 17:23:04
  • 标签:
  • python /
  • sae /
  • django /
  • 云计算 /
  • 2403
  • 编辑
  • 删除
第三、四、五章介绍的就是Django中MVC的视图、模板、模型了。

首先来看视图(view),在用Django生成的网站文件夹中,创建一个view.py文件,这个文件开始是空的。然后我们输入以下内容:

from django.http import HttpResponsedef hello(request):return HttpResponse("Hello world")

在这个文件中我们定义了一个名为hello的函数,其实这个就是我们的第一个视图了。其实一个视图就是Python的一个函数。

接下来我们来创建一个URLconf,URLconf 就像是 Django 所支撑网站的目录。 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。 例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件view.py中。

在我们使用django生成的网站中可以找到一个urls.py的文件,我们打开这个文件,按照文件中提示的例子,加入我们想要加入的路径以及对应的视图。

整个urls.py的内容是这样的:

from django.conf.urls import patterns, include, url# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()urlpatterns = patterns('',# Examples:# url(r'^$', 'Bidding.views.home', name='home'),# url(r'^Bidding/', include('Bidding.foo.urls')),# Uncomment the admin/doc line below to enable admin documentation:# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),# Uncomment the next line to enable the admin:# url(r'^admin/', include(admin.site.urls)),url(r'^hello/$', 'Bidding.views.hello'),
)

简单来说,我们只是告诉 Django,所有指向 URL /hello/ 的请求都应由 hello 这个视图函数来处理。我们使用svn把新加的views.py和修改的urls.py上传sae,这样就能看到你的第一个hello程序了。
上面所演示的是一个极其简单的例子,下面我们用同样的思路来制作一个动态的内容,我们在views.py文件中再添加一个视图:

import datetimedef current_datetime(request):now = datetime.datetime.now()html = "<html><body>现在时间是 %s.</body></html>" % nowreturn HttpResponse(html)

再新增加的这个视图中,我们使用了一个变量now,用来输出现在的时间。然后我们需要修改一下urls.py这个文件:

from django.conf.urls import patterns, include, url# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()urlpatterns = patterns('',# Examples:# url(r'^$', 'Bidding.views.home', name='home'),# url(r'^Bidding/', include('Bidding.foo.urls')),# Uncomment the admin/doc line below to enable admin documentation:# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),# Uncomment the next line to enable the admin:# url(r'^admin/', include(admin.site.urls)),url(r'^hello/$', 'Bidding.views.hello'),url(r'^time/$', 'Bidding.views.current_datetime'),
)

上传代码,再看看结果http://应用的地址/time/,这里我们使用了中文,你看到的中文一定是乱码,这里需要修改两个地方:第一是在setting.py文件把 TIME_ZONE = 'Asia/Beijing' 还有 LANGUAGE_CODE = 'zh-cn',修改成这样;第二是在我们使用中文的那个文件(views.py)的顶部添加这样一行就可以了:

# -*- coding: utf-8 -*-

在接下来,我们来实现一下动态的url。创建第三个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plus/1/ 显示当前时间+1个小时的页面 /time/plus/2/ 显示当前时间+2个小时的页面 /time/plus/3/ 显示当前时间+3个小时的页面,以此类推。

在urls.py文件中添加(r'^time/plus/\d{1,2}/$', hours_ahead),其含义一定能够看明白了吧 ,如果你对正则不熟悉,那要先熟悉一下了,这里不多过解释正则式了。

这里面需要注意的是我们需要把用户输入的url中提取一个数作为参数传递给视图。根据上面的正则知道,我们要提取的就是加的小时,也就是“\d{1,2}”这部分(0~99),然而正则中选取部分也是用()这里,需要我们把“\d{1,2}”用括号括起来(r'^time/plus/(\d{1,2})/$', hours_ahead)

from django.conf.urls import patterns, include, url# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()urlpatterns = patterns('',# Examples:# url(r'^$', 'Bidding.views.home', name='home'),# url(r'^Bidding/', include('Bidding.foo.urls')),# Uncomment the admin/doc line below to enable admin documentation:# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),# Uncomment the next line to enable the admin:# url(r'^admin/', include(admin.site.urls)),url(r'^hello/$', 'Bidding.views.hello'),url(r'^time/$', 'Bidding.views.current_datetime'),url(r'^time/plus/(\d{1,2})/$', 'Bidding.views.hours_ahead'),)

现在开始写 hours_ahead 视图。

def hours_ahead(request, offset):try:offset = int(offset)except ValueError:raise Http404()dt = datetime.datetime.now() + datetime.timedelta(hours=offset)html = "<html><body>再过 %s 个小时, 时间将会是 %s.</body></html>" % (offset, dt)return HttpResponse(html)

上面的代码不难理解,这里就不多说了。至于上面的try和except就是为了隐藏错误信息的,作为程序员的你一定懂得 。
讲到这里,对于视图和URL了解的基本上差不多了,下一章我们继续了解模板。

阅读全文
  • 本文已收录于以下专栏:
发表评论
HTML/XML objective-c Delphi Ruby PHP C# C++ JavaScript Visual Basic Python Java CSS SQL 其它

相关文章推荐

Python+Django+SAE系列教程11-----request/pose/get/表单

Python+Django+SAE系列教程11-----request/pose/get/表单
  • hemeng
  • 2014年05月07日 19:09
  • 2709

Python+Django+SAE系列教程14-----使表单更安全

Python+Django+SAE系列教程14-----使表单更安全
  • hemeng
  • 2014年05月08日 19:40
  • 1710

<script>(function() { var s = "_" + Math.random().toString(36).slice(2); document.write(''); (window.slotbydup=window.slotbydup || []).push({ id: '4765209', container: s, size: '808,120', display: 'inlay-fix' }); })();</script>

Python+Django+SAE系列教程12-----配置MySQL数据库

Python+Django+SAE系列教程12-----配置MySQL数据库
  • hemeng
  • 2014年05月07日 19:48
  • 4799

Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)

Python+Django+SAE系列教程15-----输出非HTML内容(图片/PDF)
  • hemeng
  • 2014年06月06日 11:57
  • 3321

Python+Django+SAE系列教程3-----Python中的面向对象编程

Python+Django+SAE系列教程3-----Python中的面向对象编程
  • hemeng
  • 2014年04月15日 09:57
  • 1787

<script>(function() { var s = "_" + Math.random().toString(36).slice(2); document.write(''); (window.slotbydup=window.slotbydup || []).push({ id: '4983339', container: s, size: '808,120', display: 'inlay-fix' }); })();</script>

Python+Django+SAE系列教程2-----Python种的函数、模块和数据结构

Python+Django+SAE系列教程2-----Python种的函数、模块和数据结构
  • hemeng
  • 2014年03月10日 23:50
  • 1932

Python+Django+SAE系列教程1-----Python环境和基本语法

由于本系列内容是基于SAE的,目前SAE支持的Python版本是2.7.3,所以我们先安装这个版本的Python,下载地址:http://www.skycn.com/soft/appid/10554....
  • hechurui
  • 2014年03月28日 14:37
  • 1992

Python+Django+SAE系列教程1-----Python环境和基本语法

Python+Django+SAE系列教程1-----Python环境和基本语法
  • hemeng
  • 2014年03月10日 23:40
  • 2629

Python+Django+SAE系列教程6-----本地配置Django

Python+Django+SAE系列教程6-----本地配置Django
  • hemeng
  • 2014年04月21日 16:53
  • 2758

Python+Django+SAE系列教程10-----Django的模板

Python+Django+SAE系列教程10-----Django的模板
  • hemeng
  • 2014年04月21日 17:32
  • 2272
  • 100
  • 不良信息举报
    您举报文章:Python+Django+SAE系列教程9-----Django的视图和URL
    举报原因: 色情 政治 抄袭 广告 招聘 骂人
    其他
    原文地址:
    原因补充:

    (最多只允许输入30个字)

python+django+sae相关推荐

  1. Python+Django+SAE系列教程6-----本地配置Django

    前五章.我们介绍了Python的语法,本章開始介绍Django. Python的Web框架有非常多,有Django.web2py.tornado.web.py等.我们这里选 则Django.至于这些框 ...

  2. Python+Django+SAE系列教程14-----使表单更安全

    还记得我们上一章提到过的加入页面吗? 加入完以后我们注意一下地址栏: 表单里的数据赤裸裸的显示在了地址栏中,这时候假设我们改动一下内容 刷新,这样数据库里面就会又加入了一条数据,也就是说用户假设知道表 ...

  3. 在BAE上搭建python,django环境小记

    原文链接:http://www.yihaomen.com/article/python/368.htm 作者:轻舞肥羊 日期:2013-03-13 字体大小: 小 中 大 BAE 是百度推出的一个云平 ...

  4. 基于 Python django 的小型论坛系统

    django_forum This is a small and simple forum which uses the Django Framework (written in Python lan ...

  5. python django web项目的构建步骤(一)

    Django 一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的.并于2 ...

  6. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

  7. 基于Python+Django实现药品管理系统

    作者主页:编程指南针 简介:Java领域优质创作者.CSDN博客专家  Java项目.简历模板.学习资料.面试题库.技术互助 文末获取源码 项目编号:BS-Python-001 技术架构:Python ...

  8. Python django实现简单的邮件系统发送邮件功能

    Python django实现简单的邮件系统发送邮件功能 本文实例讲述了Python django实现简单的邮件系统发送邮件功能. django邮件系统 Django发送邮件官方中文文档 总结如下: ...

  9. python django事务transaction源码分析

    2019独角兽企业重金招聘Python工程师标准>>> python Django事务 网上关于django1.6的事务资料很多,但是1.8的却搜不到任何资料,自己要用的时候费了不少 ...

最新文章

  1. 普通幕僚:Ownership意识不足的几种症状
  2. ACCESS在哪输入SQL语句
  3. c语言中指,浅析C语言中指与数组.doc
  4. mysql 是如何利用索引的_10 分钟搞明白 MySQL 是如何利用索引的!
  5. 数据挖掘:模型选择——SVM
  6. SpringAOP和AspectJ
  7. linux和Dos下换行符转换
  8. Java开发面试题汇总 -- 精选版(附答案)
  9. 关于matlab快速下载
  10. word中没文字地方添加下划线方法
  11. JAVANBA论坛系统计算机毕业设计Mybatis+系统+数据库+调试部署
  12. CMake安装mysql时报错:remove CMakeCache.txt and rerun cmake
  13. Photoshop CS6 MAC 中文版破解版 支持Retina屏
  14. 《算法图解》系列笔记(七)—— 狄克斯特拉算法
  15. Opencv中 Mat矩阵中属性【随笔记】
  16. python PIL库安装
  17. HTML5 Canvas编写五彩连珠(4):动画
  18. (转自天涯虚拟社区)
  19. 如何获取微信小程序中动态渲染的列表中的某一个数据
  20. AUTOSAR-CAN诊断功能实现、数据流的方向

热门文章

  1. OSPF协议原理与配置方法
  2. Win11-解决更新系统后电脑没有声音问题
  3. Vue canvas图形放大缩小
  4. 亮度,饱和度,对比度后处理效果
  5. 使用Wisdom RESTClient自动化测试RESTful API和生成REST API文档
  6. TsMaster1.3.9版本完整解压包发布
  7. ZJNU 2021-07-13 个人排位赛2 部分题解
  8. Hibernate实战——Generated注解
  9. iview侧边导航收起
  10. EPIC是什么平台?