Django_book 第三章

来源:互联网 发布:手机消息提醒软件 编辑:程序博客网 时间:2024/05/21 21:45

目录

三、试图和URL配置... 1

3.1 第一份视图(静态内容)... 1

3.2 第一个URLconf 1

3.3 关于报错页面... 2

3.4 django工作流程... 2

3.5 第二个视图(动态内容)... 2

3.6 第三个视图(动态URL)... 3

三、试图和URL配置

3.1 第一份视图(静态内容)

创建视图文件,命令没有强制限制,但是命名view让人容易理解

$ cd mysite/$ touch views.py

内容如下

from django.http import HttpResponsedef hello(request):        return HttpResponse("hello world")

3.2 第一个URLconf

1虽然创建了视图文件,但是现在访问并不能看到我们设定的hello页面,因为site站点对刚才的视图一无所知,我们需要一个url告知django

这个url就是在mysite/urls.py

from django.conf.urls.defaults import *from mysite.views import hellourlpatterns = patterns('',        ('^hello/$',hello),            #这里就url和views之间的映射,所有指向/hello/的请求都将由hello这个视图函数处理)

2) Urlpattern的语法:

Django检查url之前都将移除每一个申请的开头的斜杠(/),^和$属于正则表达式的内容

 

3修改完成之后无需重启服务器,开发服务器会自动监测代码变化并重新加载,刷新即可

clip_image002

 

3.3 关于报错页面

1) 如果访问了一个url.py中没有定义的页面,由于这个页面返回了较多的信息,所以不要轻易暴露在互联网上,增加安全隐患

clip_image004

 

3.4 django工作流程

1) 当运行runserver时候,服务器开始装在和manager.py在同一目录下的setting.py文件,加载配置信息

2) 其中指定了ROOT_URLCONF告知django调同一目录下的url.py

3) 当用户访问的时候,django根据这个参数装载url.py,根据urlpattern中的元组信息来进行依次匹配

4) 匹配上之后调用view中的视图函数,返回一个HttpResponse,返回网页内容

 

3.5 第二个视图(动态内容)

1) 编辑views.py

from django.http import HttpResponseimport datetimedef current_datetime(request):        now = datetime.datetime.now()        html = "<html><body>It's now %s" % now        return HttpResponse(html)

 

2) 编辑url.py

from django.conf.urls.defaults import *from mysite.views import hello, current_datetimeurlpatterns = patterns('',        ('^hello/$',hello),        ('^time/$',current_datetime),        ('^another_time/$',current_datetime),        #用另外一个url来调用current_datetime视图)

3访问time视图

clip_image006clip_image008

3.6 第三个视图(动态URL)

回顾刚才的例子,虽然页面内容是动态了,但是url却还是静态的

1编辑views.py,新增如下

from django.http import Http404, HttpResponseimport datetimedef hours_ahead(request, offset):         try:                 offset = int(offset)        except ValueError:                raise Http404()        dt = datetime.datetime.now() + datetime.timedelta(hours=offset)        html = "<html><body>It's %s hours, it will be %s</body></html>" % (offset, dt)        return HttpResponse(html)

2编辑url.py,如下

from django.conf.urls.defaults import *from mysite.views import hello,current_datetime,hours_aheadurlpatterns = patterns('',        ('^hello/$',hello),        ('^time/$',current_datetime),        ('^another_time/$',current_datetime),        (r'^time/plus/(\d{1,2})/$',hours_ahead),)

#r是让django不处理元组里的反斜杠(\)

 

3访问不同的模拟非固定的url地址

clip_image010clip_image012

 

到此第三章完,未完待续~


<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* cnblogs 首页横幅 */google_ad_slot = "5419468456";google_ad_width = 728;google_ad_height = 90;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击