我们的Hello world视图是用来演示基本的Django是如何工作的,但是它不是一个动态网页的例子,因为网页内容一直是一样的,每次访问/hello/将会看到相同的内容,类似一个静态HTML文件
我们的第二个视图将更多的放些动态的东西例如当前日期和时间在网页上
01 动态时间显示
1.视图函数代码如下views.py,导入时间模块
from django.shortcuts import render,HttpResponsedef current_datetime(request):
import datetime
now = datetime.datetime.now()
html = "It is now %s." % now
return HttpResponse(html)
2.进行url配置 /func1/urls.py
from django.conf.urls import url
from . import viewsurlpatterns = [
url(r'^current_datetime/', views.current_datetime),]
其中项目urls.py代码如下
from django.conf.urls import url,includeurlpatterns = [
url(r'^func1/', include('func1.urls')),
]
3.运行如图
文章图片
02 URL配置与松耦合
Django和URL配置背后的哲学:松耦合原则。松耦合是一个重要的保证互换性的软件开发方法。在Django的应用程序中,URL的定义和视图函数之间是松耦合的,换句话说,决定URL 返回哪个视图函数和实现这个视图函数是在两个不同的地方
03 动态URL
1.动态url的设计
动态url顾名思义就是其url的响应根据访问url的不同返回不同的视图函数
2.动态url的设计 func1/urls.py
from django.conf.urls import url
from . import viewsurlpatterns = [
url(r'^time/plus/(\d{1,2}$)', views.hours_ahead),
]
代码说明:其url使用正则表达式进行动态变化,\d表示表示数字,{1,2}表示1到两位数字,$表示结束
3.视图函数的代码 func1/views.py
from django.shortcuts import render,HttpResponse,Http404def hours_ahead(request,offset):
import datetime
try:
offset = int(offset)
except ValueError:
raise Http404()dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "In %s hour,It will be %s." %(offset,dt)
return HttpResponse(html)
文章图片
如果没有获取到offset,函数将会抛出ValueError异常并返回Http404(),timedelta将offset的hour加上当前hour并返回dt
运行结果如下:
文章图片
04 实质
所谓动态路由就是根据用户的请求方式来确定视图函数,但是每个用户的需求不同导致其url累赘,并设计url将一类相相似的url进行匹配调用视图函数,而正则表达式正好满足这个功能
【视图与URL配置--动态页面】
推荐阅读
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍
- java|微软认真聆听了开源 .NET 开发社区的炮轰( 通过CLI 支持 Hot Reload 功能)