目录
一、计算当前日期和时间
1、VIEW
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
2、URL
from django.contrib import admin
from django.urls import path
from mysite.views import hello, current_datetime
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello),
path('time/', current_datetime)
]
二、显示当前时间和加上时间偏差量的时间(使用正则表达式)
1、VIEW
from django.http import Http404, HttpResponse
import datetime
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
return HttpResponse(html)
2、URL
(1)一个URL模式就是一个正则表达式。因此,这里可以使用\d+来匹配1个以上的数字
(2)让我们把它限制在最大允许99个小时, 这样我们就只 允许一个或两个数字,正则表达式的语法就是 \d{1,2}
(3)用圆括号把 \d{1,2} 包围起来,正则表达式也是用圆括号来从文本里提取数据的(这里的文本数据是从浏览器地址栏里传过来的)
from django.contrib import admin
from django.urls import path, re_path
from mysite.views import hello, current_datetime, hours_ahead
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello),
path('time/', current_datetime),
re_path('time/plus/(\d{1,2})/', hours_ahead),
]
3、运行调试
(1)在完成视图函数和URL配置编写后,启动Django开发服务器,用浏览器访问 http://127.0.0.1:8000/time/plus/3/ 来确认它工作正常
(2)访问 http://127.0.0.1:8000/time/plus/100/ 来检验URL配置里设置的模 式是否只接受一个或两个数字。Django会显示一个和以前看到的 404 错误一 样的Page not found error 页面
(3)注释掉 hours_ahead 视图中的 offset = int(offset) 一行。你会看到一个包含大量信息的出错页 ,最上面 的一条 TypeError 信息是: “unsupported type for timedelta hours component: str” 。
Django 漂亮的出错页面:https://blog.csdn.net/bug4pie/article/details/80394945