之前自学Django也有一段时间了,再过一个月就要入职新公司了(Python Django开发),即使现在还在入门级徘徊,再好好把Django基础过一遍吧。
The Django Book 第三章 试图和URL配置
总结:
一、视图返回HttpResponse请求, Http404
from django.http import HttpRespnse def hello(request): return HttpResponse(“<body>Hello World</body>”) from django.http imort Http404 def hours_ahead(request , offset): try: offset = int(offset) except: raise Http404()
二、地址页面的请求过程
- 进入的请求为/hello/
- Django通过settings.py中的ROOT_URLCONF配置决定根URLconf
- Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
- 如果找到匹配,将调用相应的视图函数
- 视图函数返回一个HttpResponse
- 6.Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
三、settings.py
1.ROOT_URLCONF = 'mysite.urls' 配置根urlconf
2.TIME_ZONE = 'Aisa/Shanghai' 配置时区
扩展:
- 要想在url中传入参数,则在正则表达式中用圆括号括起来
- url中如果定位为如下:(r'^time/plus/(d{1,2})' 则视图函数中第二个参数(第一个为request)获取正则表达式的第一个分组[位置];也可使用关键字定义(r'^time/plus/(?P<id>d{1,2})'),则视图函数中想获取该值,则必须传入参数id。
其他:
- 在视图函数中不臆测参数值的合法性,即使offset在url中有约束
def hours_ahead(request , offset): try: offset = int(offset) except: raise Http404()
- 页面主动出错,在视图函数中添加assert False
另外:
- sublime2 中添加pep8lint,对代码进行Pclint检查
- sublime2 中添加前段ZenCoding插件已改名为EMMET