「后端学习」|「Django学习」 Django_1

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('厦门')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值