工作需要开发一个python功能,本人Java出身,通过Process调用时,可能会有各种问题,之前吃过c/c++程序的亏,基于自己的python功底,咬咬牙,脑袋一热,决定开发一个python语言基于Digngo的web程序,Java通过http请求完成调用,出问题翻遍查找。
1、创建项目
参照文档:http://www.runoob.com/django/django-first-app.html
安装步骤:pip install django
创建项目:cd 到要创建项目的目录
django-admin startproject HelloWorld(项目名)
运行项目:python manage.py runserver 0.0.0.0:8000
manage.py位置在第一层项目名下。
访问地址:http://localhost:8000/admin/
用户名 admin 密码admin
创建请求:1、./HelloWorld/HelloWorld 目录下新建view.py,写入如下内容:
from django.http import HttpResponsedef hello(request): return HttpResponse("Hello world ! ")
2、修改urls.py,在urlpatterns中添加内容,url(r'^$',view.hello),最后的逗号必须有。
3、重新启动项目,浏览器输入请求地址: 即可看到返回结果。
2、异常处理
Java请求python项目时报错,Forbidden (CSRF cookie not set.): xxx,解决方式是,修改settings.py文件,注释掉
django.middleware.csrf.CsrfViewMiddleware',
3、请求处理
创建项目没有花费多少时间,主要耗费在处理功能请求上,python的get和post请求和Java有很大不同,它固定了数据结构,统一使用
QueryDict,这个结构是一种支持一个key ,多个value,value中又有key和value的数据结构,感觉和json类似。以下是我用一个String请求后,获取数据对象的方法。
def add(request): context=""; if request.method == 'POST': for key in request.POST: context=key else: # for key in request.GET: # context=key return HttpResponse('{"code":102,"message":"不支持get请求,请使用post请求"}') return HttpResponse('{"code":0,"message":"操作成功,请求数据'+context+'"}')