Django笔记动态URL

之前我们做了hello的url转向,这是静态的,有些视图是动态的比如127.0.0.1:8000/articles/123 , book/345等。

让我们创建第三个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plus/1/ 显示当前时

间+1个小时的页面 /time/plus/2/ 显示当前时间+2个小时的页面 /time/plus/3/ 显示当前时间+3个小时的

新手可能会考虑写不同的视图函数来处理每个时间偏差量

面向函数你可能会考虑

urlpatterns = patterns('',
('^time/$', current_datetime),
('^time/plus/1/$', one_hour_ahead),
('^time/plus/2/$', two_hours_ahead),
('^time/plus/3/$', three_hours_ahead),
('^time/plus/4/$', four_hours_ahead),
)

但是我们不是呆子啊,程序员都是智商超过120的天才啊

来来跟我敲代码

Urls.py

from django.conf.urls import include, url
from django.contrib import admin
from django.conf.urls import patterns, include, url
from app01 import views as myapp
admin.autodiscover()
urlpatterns = [
   url(r'^admin/', include(admin.site.urls)),
   url(r'^$',myapp.index),
   url(r'^hello/$',myapp.hello),
   url(r'^time/plus/(\d{1,2})/$', myapp.hours_ahead),
   url(r'^time/',myapp.current_datetime),

]

views.py


def hours_ahead(request,offset):
try:
        offset = int(offset)
except ValueError:
raise Http404()
#raise "404"
now = datetime.datetime.now()
    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
    html = "<html><body>当前时间 %s </br> 时差%s小时, %s.</body></html>" % (now,offset, dt)
return HttpResponse(html)

URL只匹配了2位plus后面,如果输入100那么将获取不到参数

最后,很显然这些信息很多是敏感的,它暴露了你 Python 代码的内部结构以及 Django 配置,在 Internet 上

公开这信息是很愚蠢的。 不怀好意的人会尝试使用它攻击你的 Web 应用程序,做些下流之事。 因此,

Django 出错信息仅在 debug 模式下才会显现。 我们稍后 说明如何禁用 debug 模式。 现在,你只要知道

Django 服务器在你开启它时默认运行在 debug 模式就行了。 (听起来很熟悉? 页面没有发现错误,如前所

述,工作正常。)

更多相关文章
  • Django入门(六)动态URL
        多级url虽然可以在多个app的时候将各个应用进行归类.现在有这么一种情况,就是app01里面的views.py里面定义了大量的函数.这样的话我们势必要在app01的urls.py里也要根据函数的数量编辑绑定信息.一个函数一条绑定的信息的对应写下去.为了避免这种可怕的事情,我们就需要使用动态 ...
  • Django笔记-熟悉一些基本概念一
    1.Django是一个与python结合的web开发框架,采用模型-视图-控制器(MVC)设计模式MVC 设计模式,一个简单的实例通常包含(models.py,views.py, urls.py) 和html模板文件 models.py文件主要用一个 Python 类来描述数据表. 称为 模型(mo ...
  • Server 2008 R2 文件和存储管理学习笔记-动态磁盘管理基本磁盘是包含基本分区.扩展分区或逻辑驱动器的一种物理磁盘动态磁盘提供了基本磁盘不提供的一些高级功能,创建无限数量卷.跨越多个磁盘的卷.以及容错卷.  存在5种类型的动态卷:简单卷.跨区卷.带区卷.镜像卷.RAID-5卷1.简单卷(S ...
  • 做了2个页面,觉得大致了解了参数和页面如何传递了,我们来看下原理.一个HTTP请求发送到http://127.0.0.1:8000/hello/Django会第一时间去找setting文件的setting.pyROOT_URLCONF = 'untitled2.urls'当访问 URL /hello ...
  • 在项目文件下创建templates 目录,然后创建index.html<!DOCTYPE html><html lang="en"><head>   <meta charset="UTF-8">   <ti ...
  • 当做好了第一个页面之后,我们需要对网页进行分模块from app01 import views as myapp admin.autodiscover() urlpatterns = [ #    url(r'^admin/', include(admin.site.urls)), url(r'^t ...
  • Django笔记6)--表单
    1.HttpRequest对象HttpRequest对象包含当前请求URL的一些信息:有关request的其它信息:request.META 是一个Python字典,包含了所有本次HTTP请求的Header信息,这个字典中几个常见的键值有键值作用HTTP_REFERER进站前链接网页,如果有的话HT ...
  • 1.django笔记之django基础
    一.django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以 ...
一周排行