文档下载地址:Django_2.0_中文教程 http://download.csdn.net/detail/julius_lee/6620099
在线地址:http://djangobook.py3k.cn/2.0/
Django 2.0 Book 关键内容记录,主要是为了帮助记忆和理清整个框架,同时以后忘了可以查看,回想。
1、 创建第一个django页面:
hello world
没有网页框架,直接将helloworld保存在html文档中;django靠view视图和url产生
2、 第一个视图
Views.py中输入
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world ")
工作:
导入HttpResponse类,定义hello视图函数,至少需要一个request参数,并返回一个HttpResponse实例
3、 第一个URLconf
绑定视图函数和URLconf
URLconf 的本质是URl模式及与视图函数之间的映射表。即哪个url调用哪个视图函数
步骤:
import mysite/views.py文件中的hello视图,即:
from mysite.views import hello
urlpatterns 变量中添加URLpattern,即:
添加该元组的一个元素,前面是正则匹配,后面是使用的视图函数
注意:
python的搜索路径
首先查找当前目录,文件不存在再查找lib中的package下的文件
URLpattern语法
简而言之,就是匹配首尾,首尾要确定;尾斜杠会自动转换,也可以设置
正则表达式刚学不久,不再重复
根目录用’^$’表示,代表一个空字符串
4、 django处理请求的过程
运行runserver后,manage.py在同一目录下查找setting.py文件,读取配置信息包含template目录,database,ROOT_URLCONF等;ROOT_URLCONF = 'mysite.urls'即指向mysite/urls.py
然后当用户在地址栏访问***/hello时,django装载URLconf,然后匹配URLconf中的URLpatterns,直到匹配成功。匹配成功后就调用view函数,将HttpRequest对象作为第一个参数。
总结一下:
进来的请求转入/hello/.
Django通过在ROOT_URLCONF配置来决定根URLconf.
Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
如果找到匹配,将调用相应的视图函数
视图函数返回一个HttpResponse
Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来
5、 第二个视图:动态内容
1)对于views.py
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now%s.</body></html>" % now
return HttpResponse(html)
导入日期模块
赋值
格式化字符串构造html响应
2)对于urls.py
from mysite.views import hello,current_datetime导入视图函数
urlpatterns = patterns('',
('^hello/$', hello),
('^time/$', current_datetime),
)
增加URL映射模式映射time
3)URL配置的松耦合原则
即视图函数的实现和URL的返回放在不同地方。视图函数也可以被不同的url重用
6、 第三个视图:动态URL
显示当前时间加上时间偏差量/time/plus/1
常规思路:编写多个url及视图函数
简化方法:
方法一:查询字符串参数,常规方法
方法二:使用通配符,django
编写urls.py
(r'^time/plus/\d{1,2}/$', hours_ahead),#只允许一个或两个数字
编写hours_ahead视图
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt= datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><body>In %s hour(s), it will be%s.</body></html>" % (offset, dt)
return HttpResponse(html)
说明:
Request作为HttpResponse的对象;
Offset是从url中提取出来的,捕获值永远是字符串类型,故需要类型转换。当对非整数进行转换时会出错,报错404;
7、 django的漂亮出错页面
页面出错后会给出大量信息,一般异常信息有:
异常数据类型,异常参数,哪个文件异常,出错的具体行位置
还可以显示模板语法错误
对于django出错页的调试,可以采用插入assert False 来代替平时使用的print语句。
8、本章总结:
以上就包含了视图函数和硬编码的HTML内容。