栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

第三单元知识点

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第三单元知识点

第三单元知识点 1.GET请求的处理、POST请求的处理 GET请求:
https://www.baidu.com/?key = abc&pos=shangxi
get请求可以被浏览器保存,保存在历史记录里
get不能在使用敏感数据时使用,明文包路在请求地址中
get有长度限制

当用户通过get方式请求站点,并在路由中提供了查询参数,可以通过该属性获取到对应提交的值

def index(request):
    print(request.GET) # 'name': ['jack'], 'id': ['1']}>
    print(type(request.GET)) # 
    name_ = request.GET.get('name')
    id_ = request.GET.get('id')
    content = '%s:%s' % (name_,id_)
    return HttpResponse(content)
POST请求:
post请求不会被浏览器保存
post提交数据长度无限制
post比get更加安全
获取用户以post形式提交的数据并保存在后台,为类字典数据

因为涉及到了表单页面,所以我们先来弄一个HTML页面


    
这是一个关于 POST 的测试
{% csrf_token %} 账号:
密码:

如name属性为account的输入框中输入了test,那么后台数据接收到的值类似:{‘account’:‘test’}


{'account':'test'}

写一个视图函数用来捕获当前表单使用 POST 形式提交的数据:

def index(request):
    if request.method="POST":
        print(request.POST)
        print(type(request.POST))
        account = request.POST.get("account")
        passwd = request.POST.get("passwd")
        content = "%s:%s" % (account,passwd)
        return HttpResponse(content)
    return render(request,"index.html") #在使用 get 形式请求时,返回表单页面

如果在表单页面中账号填写为 test,密码为 123456;在视图函数中捕捉到的结果为:

'csrfmiddlewaretoken': ['EmyGwsVcrXI2LDkYLS9qflkUH4N7bM1nfTQxr3fsOsZlI4vJFwci7TargtYRAGl2'], 'account': ['test'], 'passwd': ['123456']}>
2.HTTPResponse、render、重定向概念及redirect 视图响应: HTTPResponse:
一个视图的返回值经常是为了向用户返回一个HTTPResponse响应,有如下常用的可以返回HTTPResponse的函数
from django.http import HTTPResponse
HTTPResponse(content=b'')
# 返回一个字符串内容
render:
from django.shortcuts import render
render(request,template_name,context=None,content_type=None,Status=None)
# 返回一个可渲染HTML页面 状态码为200
request:固定参数 响应的request请求 来自于参数部分接收的HTTPResponse
template_name:返回的模板页面路径
context:模板页面渲染所需的数据,默认为字典格式
content_type:生成之后的结果使用MIME类型
status:响应的状态码 默认为200
重定向概念及redirect:
frm django.shortcuts import redirect
redirect(to, permanent=False)
# 一个重定向,浏览器通过该状态码自动跳转到一个新的路由地址,默认返回响应状态码302
to # 可以说一个django项目中视图函数的路由映射,也可以是一个reverse的反向路由解析
permanent # 如果设置为True 将返回301状态码 代表永久重定向
302:临时重定向,旧地址资源临时不能用了,搜索引擎只会暂时抓取新地址的内容而保存旧的地址。
301:永久重定向,旧地址资源已经不复存在,搜索引擎不光会抓取新地址的内容,还会替换旧地址为新地址
3.类视图CBV
from django.views import View
class ArticleView(View):
    def get(self,request):
        raise Http404
    def post(self,request):
        if request.is_ajax():
            id_ = request.POST.get('id_')
            result = models.Article.objects.get(id=id_).content
            data = result.replace('rn','
') return HttpResponse(json.dumps(data,ensure_ascii=False) ) raise Http404 #url.py path('article/',ajaxviews.ArticleView.as_view())
CBV路由映射方式:
对应路由此时设置为,需要使用试图类的`as_view`函数进行实例化并且类中函数必须为小写
CBV路由映射原理:
用户访问时,会经由`View`基类中的`as_view -> dispatch`进行判断,通过请求类型分发到不同对应请求的函数名下;
也就是通过`get`方式访问,那么对应会调用到名为`get`的函数
通过将请求类型定义为函数,可以更加方便进行请求方式判断
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/924003.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号