注:以下内容转载自 现代魔法学院 网站的 再写一个Django动态程序 一文,仅供学习使用。
什么?写个 Hello World 不满足?那我们继续深入一下……比如写个显示现在时间的页面。
经过前面 Hello World 的学习,我们也知道写 Django 页面的一般过程。
先把程序写出来
1. 先设计视图函数:
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)
代码很好懂,不多说了,接下来是配置 URL:
from django.conf.urls import patterns, include, url
from views import current_datetime
urlpatterns = patterns('',
('^time/$', current_datetime),
)
现在访问 http://127.0.0.1:8000/time/,可以显示:
It is now 2015-10-09 22:38:06.933430.
动态内容
我们的 Hello world 视图是用来演示基本的 Django 是如何工作的,但是它不是一个动态网页的例子,因为网页的内容一直是一样的. 每次去查看/hello/,你将会看到相同的内容,它类似一个静态HTML文件。
我们的第二个视图,将更多的放些动态的东西例如当前日期和时间显示在网页上,这将非常好,简单的下一步,因为它不引入了数据库或者任何用户的输入,仅仅是输出显示你的服务器的内部时钟。它仅仅有限度的比 Hello World 刺激一些,但是它将演示一些新的概念。
这个视图需要做两件事情: 计算当前日期和时间,并返回包含这些值的HttpResponse 如果你对 python 很有经验,那肯定知道在 python 中需要利用 datetime 模块去计算时间。下面演示如何去使用它:
以上代码很简单,并没有涉及 Django,它仅仅是 Python 代码。需要强调的是,你应该意识到哪些是纯 Python 代码,哪些是 Django 特性代码。因为你学习了 Django,希望你能将 Django 的知识应用在那些不一定需要使用 Django 的项目上。
为了让 Django 视图显示当前日期和时间,我们仅需要把语句:datetime.datetime.now() 放入视图函数,然后返回一个 HttpResponse 对象即可。
让我们分析一下 views.py:
在文件顶端,我们添加了一条语句:import datetime。这样就可以计算日期了。
函数中的第一行代码计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now 。
函数的第二行代码用 Python 的格式化字符串(format-string)功能构造了一段 HTML 响应。字符串中的 %s 是占位符,字符串后面的百分号表示用它后面的变量 now 的值来代替 %s 。变量 %s 是一个 datetime.datetime 对象。它虽然不是一个字符串,但是 %s(格式化字符串)会把它转换成字符串,如:2015-10-09 22:38:06.933430 。这将导致HTML的输出字符串为:It is now 2015-10-09 22:38:06.933430。
最后,正如我们上一篇中写的 hello 函数一样,视图返回一个 HttpResponse 对象,它包含生成的响应。
添加上述代码之后,还要在 urls.py 中添加 URL 模式,以告诉 Django 由哪一个 URL 来处理这个视图。用/time/之类的字眼易于理解。
写好视图并且更新 URLconf 之后,运行命令 python manage.py runserver 以启动服务,在浏览器中输入http://127.0.0.1:8000/time/,你将看到当前的日期和时间。
现在,你也学会如何在 Django 中编写 Python 代码了。