Django——模块配置

Django内常用的模块配置

request(返回信息)

  1. request为客户端访问返回信息。
  2. 返回的是一个对象,可以使用属性进行提取。
  3. 用户创建自定义函数时,必须要进行request的形参传入,否则将会报错。
  4. 当url上带有参数时,不管是get还是post,都会传入到后台,使后台能够获取到。
def login(request):
    print(request)
  • request.mothod(请求方式)

  1. 返回用户的请求方式(get或者post)
  2. 以字符串形式返回
  3. 以大写形式来返回
def login(request):
    print(request.method)
  • request.GET(请求消息)

  1. 使用html标签发送get请求
  2. 后台可以通过某一个标签的get请求,来获取同时发送过来的信息,并进行相应的操作。
  3. 如果需要获取多个,那么使用getlist,将返回一个列表。
#html配置,通过for循环出来的user.pk信息
<a href="/index/?id={{ user.pk }}">删除</a>
    
#后台    
if request.GET.get('id'):
        pass
  • request.POST(提取用户信息)

  1. 获取用户返回的信息
  2. 会以QueryDict的形式返回用户的提交数据。
  3. 获取数据,使用字典提取方式来进行。
  4. 提取的数据是字符串形式。
def login(request):
    print(request.POST)

//返回信息:
<QueryDict: {'username': ['123'], 'pwd': ['abc']}>

POST后方法:

  • get

对发送过来的数据进行指定提取,如果是列表,将只返回最后一个数据。

  • getlist

对发送过来的数据进行指定提取,以列表形式进行返回。

if request.method == 'POST':
    # {'stu_name': ['asdfd'], 'stu_age': ['123'], 'sex': ['man'], 'cla_name': ['1', '2']}>   获取的格式
    rece_data = request.POST
    add_stu_name = models.stu_user.objects.create(stu_name=rece_data.get('stu_name'),
                                                  stu_age=rece_data.get('stu_age'),
                                                  stu_sex=rece_data.get('sex'))
    add_stu_name.cla_stu_id.set(rece_data.getlist('cla_name'))  
  • request.path_info(URL的路径)

  1.  只会返回访问的路径,参数、端口、IP地址都不会显示。
def login(request):
    print(request.path_info)

//返回信息:
/init/
  • request.get_full_path(URL的路径)

  1. 是request的方法,和上面的功能一样,但返回路径的同时带有后面的参数值
def login(request):
    print(request.get_full_path())

//返回信息:
/init/?id=1&name=zhao
  • request.body(请求体)

  1. 是http协议中,客户端向服务器端发送的请求体。
  2. betys类型
  3. get没有相关的请求体,只有post有
def login(request):
    print(request.body)

//返回信息:
b''
  • request.scheme(请求方式)

  1. 用户请求的协议,http或https
  2. 以字符串形式表示
def login(request):
    print(request.scheme)

//返回信息:
http
  • request.is_secure(判断请求方式是否安全)

  1. 如果是https则返回True,http返回False

 

  • request.FILES(文件处理)

提取数据:

def login(request):
    print(request.FILES)
    
# <MultiValueDict:{'file_handle':[<InMemoryUploadedFile:123.jpg (image/jpeg)>]}>
  • request.META(获取请求头)

  1. 获取发送请求的请求头信息
  2. 获取到的格式会不一样,需要哪些字段就需要自行筛查

  • request.COOKIES()

  • request.session()

response(返回数据)

用于返回给请求端的信息

from django.shortcuts import HttpResponse ,render,redirect
  • HttpResponse(以字符串形式返回)

  1. 返回第一个值必须是request
  2. 会以字符串形式进行返回给用户。
  3. 当返回的是一个字典格式时,则显示的key,如果需要
def login(request):
    return HttpResponse(request,'hello')
  • render(以文件形式返回)

  1. 返回第一个值必须是request
  2. 会以文件形式返回用户
  3. 第三个值是从数据库中返回的QuerySet数据类型。可以将数据返回给html中
def login(request):
    #从数据库获取数据信息
    all_list = models.User.objects.all()
    #返回给login.html文件
    return render(request, 'login.html',{'all_list':all_list})
{% for list in all_list %}  #用于逻辑信息提取
<div>
    <span>{{list.id}}         #用于变量信息
    <span>{{list.username}}   #用于变量信息
</div>
{% endfor %}  #结束语句
  • redirect(重定向)

  1. 重定向一个新的网页,而不是只给用户一个数据而已。
  2. 返回重定向后,浏览器查看Location,如果有信息会向网址重新发送一个get请求。
  3. 如果请求的是自己的页面,那么就直接在URL内输入'/连接'即可,写的是urlpatterns内设置的连接。
  4. 如果不写/,那么就会无限拼接原有的连接。
def login(request):
    return redirect('https://www.baidu.com')
    return redirect('/index/')

重定向的使用情况

  • JsonResponse(json格式的返回)

  1. 在前后端分离时,只需要在后端进行数据的发送即可,所以都会使用json格式进行收取和发送。
  2. 如果使用常规的json转换,那么返回页面后还需要反序列化。
  3. 使用JsonResponse后,请求返回后,由于content-type的不同,会自动进行反序列化
  4. 这样将会导致前端收取收据后直接可以使用里面的内容,而不用再反序列化操作。
  5. 如果需要在其内传输非字典格式数据,那么要在data后加safe=False
  6. 可以附带字典类型,前端直接data.xxx即可出现结果。
from django.http.response import JsonResponse

def json_data(request):
    return HttpResponse(json.dumps({}))  #Content-Type:text/html; charset=tuf-8
    return JsonResponse({})    #Content-Type:application/json
    return JsonResponse([],safe=False)    #Content-Type:application/json
    #如果不使用JsonResponse,可以自行修改返回头的信息。
    return HttpResponse(json.dumps(data),content_type = 'application/json')

  • reverse(命名URL反向解析)

使用reverse模块将配置好的命名URL地址提取

返回的是完整的路径名称

from django.urls import reverse
url(r'^index/(\d*)', views.index, name='index'), 

def info(request):
    reverse("index", args=("2018", ))

 

posted @ 2023-02-28 16:39  新兵蛋Z  阅读(40)  评论(0编辑  收藏  举报