浩的博客

Python开发入门与实战3-Django动态页面

3.Django动态页面

上一章节我们实现的helloworld视图是用来演示Django网页是创建的,它不是一个动态网页,每次运行/helloworld/,我们都将看到相同的内容,它类似一个静态HTML文件。

接下来我们将实现另一个视图,加入动态内容,例如当前日期和时间显示在网页上。通过简单的下一步,来演示Django的这个技术。

3.1.一个简单的动态页面例子

这个视图做两件事情: 获取服务器当前日期和时间,并返回包含这些值的HttpResponse 。为了让Django视图显示当前日期和时间,在代码中引入datetime模块,然后要把语句:datetime.datetime.now()放入视图函数,然后返回一个HttpResponse对象即可。代码如下:

from django.http import HttpResponse

import datetime

 

def helloworld(request):

      return HttpResponse("Hello world")

 

def current_datetime(request):

    now   = datetime.datetime.now()

    html   = "<html><body>It is now %s.</body></html>"   % now

      return HttpResponse(html)

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

完成添加views.py上述代码之后,同上,在urls.py中添加URL模式,以告诉Django由哪一个URL来处理这个视图。 如下:我们定义/mytime/URL:

from django.conf.urls import patterns, include, url

from mysite.views import hello,current_datetime

 

 

# Uncomment the next two lines to enable the admin:

# from django.contrib import admin

# admin.autodiscover()

 

urlpatterns = patterns('',

    # Examples:

    # url(r'^$',   'mysite.views.home', name='home'),

    # url(r'^mysite/',   include('mysite.foo.urls')),

 

    # Uncomment the   admin/doc line below to enable admin documentation:

    #   url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

 

    # Uncomment the   next line to enable the admin:

    #   url(r'^admin/', include(admin.site.urls)),

 

    ('^helloworld/$',   hello),

    ('^mytime/$',   current_datetime),

)

  写好视图并且更新URLconf之后,运行命令python manage.py runserver运行服务器,在浏览器中输入http://127.0.0.1:8000, 我们将看到增加的mytime页面目录。

                         

在浏览器中输入http://127.0.0.1:8000/mytime/。 网页将显示当前的日期和时间。

 

3.2. 小结

本小节通过一个简单例子展示了动态页面的例子,目前为止HTML源码被直接硬编码在 Python 代码之中,下一章节我们将介绍Django模板系统,如何解决Python代码与页面设计分离的问题。

posted on 2015-07-13 21:34  wuch  阅读(6289)  评论(0编辑  收藏  举报

导航