带参数的URLconf

我们在Django建立helloworld自定义页面创建的页面,只能算是一个静态页,发起一个请求,返回一个固定的值,并不能满足我们动态的需求。今天我们创建一个带参数的URLconf,根据参数展示不同的内容。

另一个试图函数

打开views.py,创建一个试图函数

1 def current_dt(request):
2     now = datetime.datetime.now()
3     html = "<html><body>it is now %s.</body></html>" % now
4     return HttpResponse(html)

这里我是沿用helloWord那个views.py文件,需要引入datetime模块

from django.http import HttpResponse
import datetime

打开urls.py,配置一个URL

url(r‘^curtime/$‘,current_dt),

好了,我们访问一下这个地址吧,效果如下

每次刷新都会显示当前时间,当然这不是我们的动态效果。

带参数的视图函数

在当前时间基础上增加时差的视图。

我们重复上述动作,新建试图函数(只不过除了request,多一个参数-时差数)

1 def hours_ahead(request,phours):
2     try:
3         phours = int(phours)
4     except VauleError:
5         raise Http404()
6
7     dt = datetime.datetime.now() + datetime.timedelta(hours=phours)
8     html = "<html><body>In %s hour(s),it will be %s.</body></html>" % (phours,dt)
9     return HttpResponse(html)

注意:捕获值(传递的参数)永远都是字符串(string)类型,而不会是整数(integer)类型,即使这个字符串全由数字构成(如:“21”)。

因此这里我们使用int()进行转换

phours = int(phours)

配置URLconf

那么,我们如何设计程序来处理任意数量的时差?

答案是:使用通配符(wildcard URLpatterns)。一个URL模式就是一个正则表达式,因此,这里可以使用d+来匹配1个以上的数字。

在这里我们就设置了99个小时的时间段限制。

现在我们已经设计了一个带通配符的URL,我们需要一个方法把它传递到视图函数里去,这样我们只用一个视图函数就可以处理所有的时间段了。 我们使用圆括号把参数在URL模式里标识出来。在这个例子中,我们想要把这些数字作为参数,用圆括号把 \d{1,2} 包围起来

url(r‘^ptime/plus/(\d{1,2})/$‘,hours_ahead),

另外一个重点,正则表达式字符串的开头字母“r”。 它告诉Python这是个原始字符串,不需要处理里面的反斜杠(转义字符)。 在普通Python字符串中,反斜杠用于特殊字符的转义。比如n转义成一个换行符。 当你用r把它标示为一个原始字符串后,Python不再视其中的反斜杠为转义字符。也就是说,“n”是两个字符串:“”和“n”。由于反斜杠在Python代码和正则表达式中有冲突,因此建议你在Python定义正则表达式时都使用原始字符串。

好,我们访问一下看看效果吧

到此为止,我们已经可以传递参数,根据参数来显示内容了。

带参数的URLconf,布布扣,bubuko.com

时间: 2024-10-21 04:31:41

带参数的URLconf的相关文章

微信服务器与项目服务器的交互(关注功能、微信扫描带参数二维码)

<?php /** * wechat php test */ //define your token define("TOKEN", "txtj"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj->valid(); }else{ $wechatObj->responseMsg(); } class wechatCallback

微信公众平台生成带参数二维码

<?php // +---------------------------------------------------------------------- // | 获取微信公众带参数二维码 // | Author: wzb [email protected] // +---------------------------------------------------------------------- namespace Mob\Controller; use Think\Contr

带参数的方法

带参数的方法 1.语法: <访问修饰符>放回值类型<方法名><(形式方法列表)>{ //方法的主体     } 2.调用带参方法 语法:对象名.方法名(参数1,参数2.....参数N)

微信二维码带参数的二维码(转)

官方文档地址:https://mp.weixin.qq.com/wiki/18/28fc21e7ed87bec960651f0ce873ef8a.html 原文地址:http://jingyan.baidu.com/article/fdbd4277cfd0c6b89f3f485f.html 注意事项 我知道你们是没有心情看注意事项的,但是很重要,所以我先摆上来. 用户扫描带参数的二维码,可能推送以下两种事件: 1.如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给

25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

package zhongqiuzuoye; public class Rect { public double width; public double height; Rect(double width,double height) //带有两个参数的构造方法,用于将width和height属性初化; { this.width=width; this.height=height; } Rect() //不带参数的构造方法,将矩形初始化为宽和高都为10. { width=10; height=

带参数二维码的使用

带参数二维码的使用 最近做微信PC端网页微信相关功能的开发,从一个新手的角度来说,微信公众号的文档还是不好理解的,网上找的帖子大都也都基本上是复制微信公众平台上给的文档,开发微信带参数二维码过程中还是遇到不少坑的,在此把我的开发过程比较详细的记录下,希望对大家有所帮助. 我本次开发使用的是认证服务号. 1 接入 首先进入微信公众号 -> 基本配置 下面是基本配置的页面,在URL中填写服务器地址,这个地址就是接受微信推送事件的一个接口,我是使用thinkPHP框架开发的程序,在其中一个Module

不带参数的宏定义与带参数的宏定义

宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义.文件包含.条件编译 1.不带参数的宏定义: 宏定义又称为宏代换.宏替换,简称“宏”. 格式: #define 标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”. 预处理(预编译)工作也叫做宏展开:将宏名替换为字符串. 掌握"宏"概念的关键是“换”.一切以换为前提.做任何事情之前先要换,准确理解之前就要“换”. 即在对相关命令或语句的含义和功能作具体分析之前就要换: 例: #define PI 3.1415

c# 多线程 调用带参数函数

线程操作主要用到Thread类,他是定义在System.Threading.dll下.使用时需要添加这一个引用.该类提供给我们四个重载的构造函数(以下引自msdn).       Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.     Thread (ThreadStart) 初始化 Thread 类的新实例.    由 .NET Compact Framework 支持.        Threa

带参数的main函数的使用

以前接触的main函数都是不带参数的.因此main 后的括号都是空括号.  main() {   ...  } 实际上,main函数可以带参数,这个参数可以认为是main函数的形式参数. C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv.因此,main函数的函数头可写为: main(argc,argv) C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头应写为: main (int