Django
Request & Response 对象
HTTP请求与Django Request对象
HTTP请求
请求方法、请求参数、headers、cookies、请求端信息
Django Request对象
请求方法 -> Request对象中的method属性
客户端信息 -> Request对象的META属性
Cookies -> Request对象中的Cookies属性
请求参数 -> Request对象中的QueryDict
HTTP请求应答与Django Response对象
Django Response对象
from django.http import HttpResponse,JsonResponse,FileResponse
def helloworld(request):
print("request method:",request.method)
print('request META:',request.META)
print("request COOKIES:",request.COOKIES)
print("request QueryDict",request.GET)
# return HttpResponse(content='Hello World',status =201)
m = {
"message": "Hello Django Response"
}
return JsonResponse(data=m,safe = False,status = 200)
#如果safe为false,那么data中所有的python对象都会被设置为json对象传输;
# 反之safe为true,只能传递json对象
pass
实战(天气小应用)
backend_test.apis.weather
from django.http import HttpResponse,JsonResponse,FileResponse
from thirdparty import juhe
import json
def helloworld(request):
print("request method:",request.method)
print('request META:',request.META)
print("request COOKIES:",request.COOKIES)
print("request QueryDict",request.GET)
# return HttpResponse(content='Hello World',status =201)
m = {
"message": "Hello Django Response"
}
return JsonResponse(data=m,safe = False,status = 200)
#如果safe为false,那么data中所有的python对象都会被设置为json对象传输;
# 反之safe为true,只能传递json对象
pass
def weather(request):
if request.method == 'GET':
city = request.GET.get('city')
data = juhe.weather(city)
return JsonResponse(data = data,status = 200)
elif request.method == 'POST':
received_body = request.body
received_body = json.loads(received_body)
cities = received_body.get('cities')
response_data = []
for city in cities:
result = juhe.weather(city) #返回的结果是一个json列表
print(result)
result["city"] = city #相当于在json列表后面添加了一个k-v对
print("\n")
print(result)
response_data.append(result)
return JsonResp
backend.thirdparty.juhe
import requests
import json
def weather(cityname):
key = '自己的appKey'
api = 'http://v.juhe.cn/weather/index'
params = 'cityname=%s&key=%s' % (cityname,key)
url = api +'?' + params
print(url)
response = requests.get(url = url)
json_data = json.loads(response.text)
print(json_data)
result = json_data.get('result')
sk = result.get('sk')
response = dict()
response['temperature'] = sk.get('temp')
response['wind_direction'] = sk.get('wind_direction')
response['wind_strength'] = sk.get('wind_strength')
response['humidity'] = sk.get('humidity')
response['time']= sk.get('time')
return response
if __name__ == '__main__':
data = weather('厦门')