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


    第一个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/。 将会看到当前的日期和时间。

    评论
  • 相关阅读:
    yum上包找不到时,用rpmsearch
    多语言国家与缩写映射表
    M_LROOT,LD_LIBRARY_PATH, “Not all extension Dlls were loaded”问题原因及解决方法(持续更新)
    android 手机信息获取
    32位和64位adb下载及安装
    basename usage in linux
    单台centos7.3 虚拟机实现主从复制和哨兵集群
    XXL-JOB分布式任务调度平台安装与部署
    MySQL5.7压缩包安装图文教程
    基于Consul+Upsync+Nginx实现动态负载均衡
  • 原文地址:https://www.cnblogs.com/voidy/p/3947418.html
Copyright © 2020-2023  润新知