Fork me on GitHub

新博客地址:voidy's blog

Python框架之Django学习笔记(五)

Posted on 2014-08-31 10:49  尛鱼  阅读(722)  评论(0编辑  收藏  举报

第一个Django网页小结

  1. 进来的请求转入/hello/。
  2. Django通过在ROOT_URLCONF配置来决定根URLconf。
  3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
  4. 如果找到匹配,将调用相应的视图函数。
  5. 视图函数返回一个HttpResponse。
  6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来。

  在url映射到函数部分用到了一些正则表达式的相关知识,在http://www.cnblogs.com/voidy/p/3946451.html中的博文有相关介绍,那些足以写Django网页了,不过如果想写爬虫的话,还是建议系统学习一下正则表达式的知识。

第一个动态视图

  这个视图需要做两件事情: 计算当前日期和时间,并返回包含这些值的HttpResponse。在Python中这么写的:

>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2014, 8, 31, 10, 39, 40, 234000)
>>> print now
2014-08-31 10:39:40.234000

  为了让Django视图显示当前日期和时间,需要把语句:datetime.datetime.now()放入视图函数,然后返回一个HttpResponse对象即可。代码如下:

 1 from django.http import HttpResponse
 2 import datetime
 3 
 4 def hello(request):
 5     return HttpResponse("Hello world")
 6 
 7 def current_datetime(request):
 8     now = datetime.datetime.now()
 9     html = "<html><body>It is now %s.</body></html>" % now
10     return HttpResponse(html)

  在文件顶端,添加了一条语句:import datetime。这样就可以计算日期了。

  函数中的第8行代码计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now

  函数的第9行代码用 Python 的格式化字符串(format-string)功能构造了一段 HTML 响应。 字符串中的%s是占位符,字符串后面的百分号表示用它后面的变量now的值来代替%s。变量%s是一个datetime.datetime对象。它虽然不 是一个字符串,但是%s(格式化字符串)会把它转换成字符串,如:2014-08-31 10:39:40.234000。这将导致HTML的输出字符串为:It is now 2014-08-31 10:39:40.234000。

  最后,正如上篇博文写的hello函数一样,视图返回一个HttpResponse对象,它包含生成的响应。

  添加上述代码之后,还要在urls.py中添加URL模式,以告诉Django由哪一个URL来处理这个视图。 用/time/之类的字眼易于理解:

1 from django.conf.urls.defaults import *
2 from mysite.views import hello, current_datetime
3 
4 urlpatterns = patterns('',
5     ('^hello/$', hello),
6     ('^time/$', current_datetime),
7 )

  写好视图并且更新URLconf之后,运行命令python manage.py runserver以启动服务,在浏览器中输入http://127.0.0.1:8000/time/。 将会看到当前的日期和时间。