from http://kasicass.blog.163.com/blog/static/3956192009510115226144/
django.core.management.base.py, commands 的基类,定义了几个基础接口
django.core.management.[commands], 里面实现了 startproject, runserver 等所有的 commands
django.core.management.__init__.py 中的 execute_manager() 是所有逻辑的入口。
python manager.py runserver ip:port ==>
django.core.management.__init__.py
django.core.management.commands.runserver.py
django.core.servers.basehttp.run()
httpd = WSGIServer(server_address, WSGIRequestHandler)
httpd.set_app(wsgi_handler) # wsgi_handler = AdminMediaHandler(WSGIHandler(), path)
httpd.serve_forever() # django.core.handlers.wsgi.WSGIHandler
http request =>
django.core.servers.basehttp.WSGIRequestHandler.handle()
django.core.servers.basehttp.ServerHandler.run()
django.core.servers.basehttp.AdminMediaHandler.__call__()
django.core.handlers.wsgi.WSGIHandler.__call__()
request = self.request_class(environ) 【1】
response = self.get_response(request) 【2】
django.core.handlers.base.BaseHandler.get_response()
resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
callback, callback_args, callback_kwargs = resolver.resolve(request.path_info)
response = callback(request, *callback_args, **callback_kwargs)
django.core.servers.basehttp.ServerHandler.run(), response 会被一路 return,到达这里后,拼接,再发回给浏览器。
我们的小程序 helloworld.index() 就是上面的 callback 函数。
-------------------------------------------------
# urls.py
urlpatterns = patterns('',
(r'^hello/$', 'foobar.helloworld.index'),
)
-------------------------------------------------
# helloworld.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello Django!")
-------------------------------------------------
WSGI 是啥,看:
http://cvs.woodpecker.org.cn/svn/woodpecker/pureprolog/trunk/essay/wsgiinto/wsgi_into.html
http://wiki.python.org/moin/WSGIImplementations
==================================================================================
//我的注释:奇怪吗,在上面生成response的过程当中,又再次生成了request,看上面的【1】,原因在于:我们对request对象当中进行的一些参数设置,要反馈到response当中去,比如cookie和session,这也不难理解为什么下面这样的代码,把我们设置的session 给回传给客户端了
def login(request):
m = Member.objects.get(username=request.POST['username'])
if m.password == request.POST['password']:
request.session['member_id'] = m.id
return HttpResponse("You're logged in.")
else:
return HttpResponse("Your username and password didn't match.")
via http://docs.djangoproject.com/en/dev/topics/http/sessions/
分享到:
相关推荐
Python+Vue+Django前后端分离的学习学生管理系统源码 Python+Vue+Django前后端分离的学习学生管理系统源码 Python+Vue+Django前后端分离的学习学生管理系统源码 Python+Vue+Django前后端分离的学习学生管理...
前端vue+后端django的一个分享交流平台源码 前端vue+后端django的一个分享交流平台源码 前端vue+后端django的一个分享交流平台源码 前端vue+后端django的一个分享交流平台源码 前端vue+后端django的一个分享...
vue+echarts+element ui+django 前后端分离考勤系统源码 vue+echarts+element ui+django 前后端分离考勤系统源码 vue+echarts+element ui+django 前后端分离考勤系统源码 vue+echarts+...
python+django+mysql电影推荐系统源码,毕业设计 python+django+mysql电影推荐系统源码,毕业设计 python+django+mysql电影推荐系统源码,毕业设计 python+django+mysql电影推荐系统源码,毕业设计 python+...
基于yolov3+crnn+Django在线文字识别源码 基于yolov3+crnn+Django在线文字识别源码 基于yolov3+crnn+Django在线文字识别源码 基于yolov3+crnn+Django在线文字识别源码 基于yolov3+crnn+Django在线文字识别...
基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书管理系统源码 基于 vue + django 的二手图书...
python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+Django+layui实现婚庆系统源码 python+...
Nginx+Uwsgi+Django(python3)+Vue部署,一步步实现。网上找了N多篇文章都没成功,特意记录,以免其他同学踩坑
毕业设计+Python基于Django网络健身俱乐部网站设计+Pycharm+Django2.0 + sqlite.zip毕业设计+Python基于Django网络健身俱乐部网站设计+Pycharm+Django2.0 + sqlite.zip毕业设计+Python基于Django网络健身俱乐部网站...
会议室预约小程序+Django服务端后台源码 会议室预约小程序+Django服务端后台源码 会议室预约小程序+Django服务端后台源码 会议室预约小程序+Django服务端后台源码 会议室预约小程序+Django服务端后台源码 ...
Python + Django 搭建的一个生鲜店源码 Python + Django 搭建的一个生鲜店源码 Python + Django 搭建的一个生鲜店源码 Python + Django 搭建的一个生鲜店源码 Python + Django 搭建的一个生鲜店源码 Python + ...
Python+Django实现基于人脸识别的门禁管理系统【源码】Python+Django实现基于人脸识别的门禁管理系统【源码】Python+Django实现基于人脸识别的门禁管理系统【源码】Python+Django实现基于人脸识别的门禁管理系统...
python+django 使用mtv框架开发,web入门程序使用mysql数据库 python+django 使用mtv框架开发,web入门程序使用mysql数据库 python+django 使用mtv框架开发,web入门程序使用mysql数据库 python+django 使用mtv...
Scrapy + Elasticsearch + Django打造全文搜索引擎源码 Scrapy + Elasticsearch + Django打造全文搜索引擎源码 Scrapy + Elasticsearch + Django打造全文搜索引擎源码 Scrapy + Elasticsearch + Django打造...
基于Python+Django的博客系统实现源码+项目说明(计算机毕设).zip 基于Python+Django的博客系统实现源码+项目说明(计算机毕设).zip 基于Python+Django的博客系统实现源码+项目说明(计算机毕设).zip 基于Python+...
基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计),基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计),基于python+django学生信息管理系统设计与实现(含程序源码和毕业设计)...
基于 python3+django 开发的一套 web 可视化的运维自动化项目源码 基于 python3+django 开发的一套 web 可视化的运维自动化项目源码 基于 python3+django 开发的一套 web 可视化的运维自动化项目源码 基于 ...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业...接口自动化测试平台源码+项目说明(基于HttpRunner+Python+Django+Vue).zip
Django 中request.get和request.post的区别 POST和GET差异: POST和GET是HTTP协议定义的与服务器交互的方法。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。另外,还有PUT和DELETE方法。 POST和GET都...
基于Django的图书管理系统源码+数据库,基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理系统源码+数据库基于Django的图书管理...