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) 修改完成之后无需重启服务器,开发服务器会自动监测代码变化并重新加载,刷新即可
3.3 关于报错页面
1) 如果访问了一个url.py中没有定义的页面,由于这个页面返回了较多的信息,所以不要轻易暴露在互联网上,增加安全隐患
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视图
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地址
到此第三章完,未完待续~
<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>
- Django_book 第三章
- Django_book 第二章
- Django_book 第一章
- Django_book(13输出非html内容)
- 第三章第三题
- 第三章第三题
- 第三章第三题
- 第三章
- 第三章
- 第三章
- 第三章
- 第三章
- 第三章
- 第三章
- 《第三章》
- 第三章
- 第三章
- 第三章
- 嵌入式系统 Boot Loader 技术内幕
- 外企常见英语口语面试题
- 大白话解析模拟退火算法
- 我的设计模式学习之路7(模板模式)
- java regex group 用法
- Django_book 第三章
- 文件格式参考网址
- (4)Cocos2d-x的Helloworld项目工程架构解析
- C++ - static_cast | reinterpret_cast | dynamic_cast
- 用chroot对付磁盘空间不足的情况
- LUANET实例化C# 类
- PHP 观察者模式
- 创建的模态对话框无法响应鼠标,只响应回车
- 数据结构(C语言版)