最近项目组需要搭建一个server供其它工程使用,时间比较仓促,很多同事都是用的c++开发,对其它的web,app等不是很熟,于是,就让我这个刚进来的应届生参与进来,和leader一起做;之前也只是用python做了一些简单的网络爬虫相关毕业设计 ,对于python用于web开发并不是很熟悉;好在leader也精通python,对python的各个运用都比较熟悉,于是就选定了django作为搭建server的框架;在这里记录一些我对django的探索和学习,希望能给自己以及后来者一些帮助。^_^
先看点中文的基础教程,然后再看官方网站的文档会好些,(此方法适用于我这种英语半路子的人,英语好的可直接参考官方文档!)
总的架构图如下:(图片来自互联网)
最开始接触的时候,被leader的操作看蒙圈了,只写了几行代码,修改了一下东西,就出现了效果,好神奇,怎么可以这么简单,比我之前有php写快捷多了。于是,我就开始琢磨着里面的请求原理是什么样的,因为我深信所有web程序请求响应原理都是一样的,都得符合http协议。下面是在网上找的一张图:
可能我觉得第一次接触还是有些不太明白,配合上面的图解,原理是这样:
- 首先客户端(例如浏览器等)通过url访问站点,这里的请求体被打包成了HttpRequest对象,以供其它中间件使用;
- 对请求的url地址进行解析,django结构中urls.py就是专门匹配客户端的url地址的,对匹配到的url地址,指定相应的视图模块进行处理;找不到就调用默认的视图处理直接返回一个信息,比如404这种情况;
- 然后在view这一层,就可以根据HttpRequest对象中的信息,调用models模块(数据模型->大多是文件或则数据库的写入和读取操作)进行处理了;最后调用templates将要输出的信息render(response)给客户端;
这里用几个问题:
session是怎么管理的?
怎么防止csrf(跨站请求伪造(例如,各种爬虫))?
对于数据库层次,它又是怎么简化操作的?
admin这个大仓库怎么修改和订制自己的风格?
编排顺序和组织方式对它的各个中间件有没有影响?
它的单元测试使用问题?
用它做的应用程序时候,web服务器的部署问题?
等等还有很多小的知识点,感觉每个小知识点都是django框架中的一个组件,都可以另起一片文章写了~(待更新)
Django框架-Admin组件
http://www.cnblogs.com/btchenguang/archive/2012/08/29/2655933.html
http://blog.csdn.net/Java2King/article/details/5308326
SQLite数据库查看工具:window下SQLite Developer Linux下:可以直接在python环境中查看,不过在使用的时候需要加载Django的配置文件
方法如下:
import os,django os.environ.setdefault("DJANGO_SETTINGS_MODULE","PROJECT_NAME.settings") django.setup() import xxxapp.models