**ModelSerializer:**对Model进行序列化,会自动生成字段和验证规则,默认还包含简单的create()和update()方法。...查看单条数据: http://127.0.0.1:8000/myapp/api/user/1/ Serializer用户创建接口 上述的配置不变,只需要变动视图和序列化 app视图函数: myapp/...user_ser = UserSerializer(data=request.data) #request.data是用户POST数据 if user_ser.is_valid...更新和创建数据测试 DRF序列化器: 序列化器参数 序列化器工作流程: 序列化(读数据:视图里通过ORM从数据库获取数据查询集对象 -> 数据传入序列化器-> 序列化器将数据进行序列化 -> 调用序列化器的...常用参数 通用参数 DRF序列化器:扩展验证规则 如果常用参数无法满足验证要求时,可通过钩子方法扩展验证规则。
手动生成验证码 安装绘图依赖,利用的是画图模块 PIL 以及随机模块 random 在后台生成一个图片和一串随机数,然后保存在内存中。...(**form.cleaned_data).first() print(user_obj) if not user_obj: form.add_error...views.image_code), 总结 画图程序 check_code.py 保存在项目任意位置即可,只需在视图函数中导入即可。...1:配置参数 // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它做appendTo之类的事件 initGeetest({...user_obj = auth.authenticate(username=username, password=password) if user_obj
0903自我总结 drf框架序列化和反序列化 from rest_framework import serializers 一.自己对于序列化和反序列化使用的分类 前后端交互主要有get,post,puch...= models.User.objects.all().frist user_obj_data = '''我们自定义的Serializer类'''(user_obj).data...如果models中对象为多个Serializer传入models中的对象以外many=True还需传入这个参数 many这个参数默认是False所有我们序列化单个参数时候不需要传入many 序列化数据可以为状态...pk=pk) # user_query.update(**kwargs) # 第二种:user_obj完成数据的更新 # user_obj = models.User.objects.filter...(): # save的返回值是由update内部自定义的返回值决定 user_obj = user_ser.save() return
= 1010 login_obj.error = '用户名或密码不能为空' else: try: user_obj...models.DateTimeField(auto_now=True) QQ截图20200319131635.png 3.2关于 auth_now 和 auth_now_add 的区别,day67也有讲述...).seconds > 20: raise AuthenticationFailed('token已经过期,请重新登录') return user_obj, token...', request.META) if not token: raise AuthenticationFailed('token不能为空') user_obj...> 100000: raise AuthenticationFailed('token已经过期,请重新登录') return user_obj, token
import authenticate,login def user_login(request): if request.method == 'POST': # 获取用户提交的用户名和密码...== 'POST': # 获取用户提交的用户名和密码 user_name = request.POST.get('username',None) pass_word...): return render(request, 'login.html') def post(self,request): # 获取用户提交的用户名和密码...(): # 获取用户提交的用户名和密码 user_name = request.POST.get('username', None)...login_form = LoginForm(request.POST) if login_form.is_valid(): # 获取用户提交的用户名和密码
常用属性: request.data:返回POST提交的数据,与request.POST类似 request.query_params:返回GET URL参数,与request.GET类似 浏览器get...a=123&b=456 查看get_params数据 post数据测试 查看request.data数据 get和post提交数据场景和特点 get 获取数据 提交数据有长度限制 传输是明文形式...user_obj, many=True) result = {"code": 200, "msg": "success", "data": user_ser.data}...id=id) user_ser = UserSerializer(user_obj) result = {"code": 200, "msg": "success", "...user_obj = User.objects.get(id=id) user_ser = UserSerializer(instance=user_obj,data=request.data
前言 目标:实现用户登录和验证码功能。...但是仍然有以下三种方式来维持 Web 客户端和 Web 服务器之间的 session 会话: Cookies 一个 Web 服务器可以分配一个唯一的 session 会话 ID 作为每个 Web 客户端的...) if form.is_valid(): # 验证码的校验 user_input_code = form.cleaned_data.pop('code')..., 'login.html', {'form': form}) # 查询数据库匹配用户名密码是否正确 user_obj = models.UserInfo.objects.filter...(**form.cleaned_data).first() print(user_obj) if not user_obj: form.add_error
//得到查询的参数,会在url后面拼接,如:?...2&sortOrder=asc&search_kw=&_=1564105760651 queryParams: function (params) { //这里的键的名字和控制器的变量名必须一直...": if request.is_ajax(): user_obj = Teacher.objects.filter(id=request.POST.get("id...")).first() if not user_obj: return JsonResponse({"code": 1111, "msg": "id...not found"}) form_obj = TeahcherForm(request.POST,instance=user_obj) # 指定哪个对象修改
model和form的结合体,所以有以下功能: 验证 数据库操作 Form回顾 models.py class UserType(models.Model): caption = models.CharField...,instance=user_obj) 不然是新建数据,而不是对某行数据进行修改。...nid): # 获取当前id对象的用户信息 # 显示用户已经存在数据 if request.method == "GET": user_obj = models.UserInfo.objects.filter...(request,'user_edit.html',{'mf': mf, 'nid': nid}) elif request.method == 'POST': # 数据修改的信息...user_obj = models.UserInfo.objects.filter(id=nid).first() mf = UserInfoModelForm(request.POST
(login_auth) # 第二种, get 和 post 都会被装饰(登录验证)(直接把 dispatch 拿过来,加个装饰器) def dispatch(self, request, *...None # 记录用户状态 auth.login(request, user_obj) # 登录,会自动存 session # 优点:只要执行了这一句话,你就可以在后端任意位置通过 request.user...print(user_obj) # print(user_obj) # print(user_obj.username) # print...request, user_obj) # 将用户状态记录到session中 """只要执行了这一句话 你就可以在后端任意位置通过request.user获取到当前用户对象"""...') password = request.POST.get('password') user_obj = User.objects.filter(username=username
redirect_uri 是 必需参数,除非通过其它方式在客户端和授权服务器之间已经确定了一个重定向URI。这是当终端用户的授权步骤完成时授权服务器将要把user-agent重定向到的一个绝对URI。...如果一个授权码被多次使用,授权服务器可能撤销之前基于这个授权码分发的所有令牌。授权码与客户端标识符和重定向URI相绑定。 state 如果“state”参数在客户端授权请求中存在,则这个参数是必需的。...它的值必须是“authorization_code” code 是 必需参数。从授权服务器接收到的授权码。 redirect_uri 是 必需参数。在最初请求中使用的重定向URI。...错误响应 如果终端用户拒绝了访问请求,或者由于除了缺少或无效重定向URI之外的其它原因而导致请求失败, error 错误码 invalid_request 请求缺少某个必需参数,包含一个不支持的参数或参数值...redirect_uri 是 必需参数,除非通过其它方式在客户端和授权服务器之间已经确定了一个重定向URI。这是当终端用户的授权步骤完成时授权服务器将要把user-agent重定向到的一个绝对URI。
快速实例 Quickstart 序列化 创建一个序列化类 简单使用 开发我们的Web API的第一件事是为我们的Web API提供一种将代码片段实例序列化和反序列化为诸如json之类的表示形式的方式。..._request.POST.get("pwd") user_obj=UserInfo.objects.filter(user=user,pwd=pwd).first()...print(user,pwd,user_obj) if not user_obj: res["code"]=1001...(user=user_obj,defaults={"token":token}) res["token"]=token except Exception...类和rest-framework的request类的源码解析 局部视图 from rest_framework.parsers import JSONParser,FormParser class PublishViewSet
# if request.method == 'GET': # return render(request, 'login.html') # # get请求传递值获取和post...对象的语句 # for user_obj in user_list: # print(user_obj.pk,user_obj.username) return... render(request,'userlist.html',locals()) #locals() 把本地的参数传递过去 1 2 3 4 5 6 7 8 9 10 11 12 13 14...edit_id={{ foo.pk }}" class="btn btn-success">编辑 #定义一个编辑模块,设置一个把参数通过get连接的方式传递, 1 #定义一个删除模块,设置一个把参数通过...).first() # 查询数据方式2 # user_obj=models.User.objects.get(id=edit_id) # print(user_obj
User表具有以下字段: 内置的User模型拥有以下的字段: username: 用户名。150个字符以内。可以包含数字和英文字符,以及_、@、+、.和-字符。不能为空,且必须唯一!...['username'] password = request.POST['password'] user_obj = authenticate(username=username, password...=password) if user_obj: login(request, user_obj) #可以简单理解为request.session['user_id']=user_id,并且将...user_obj封装到了request里面,通过request.user=user_obj # Redirect to a success page. ......注意: 只要使用login(request, user_obj)之后,request.user就能拿到当前登录的用户对象。
": user = request.POST.get("user") pwd = request.POST.get("pwd") # 查询数据库中的用户名和密码...user_obj = models.UserInfo.objects.filter(username=user, password=pwd).first() if user_obj...": user = request.POST.get("user") pwd = request.POST.get("pwd") user_obj = models.UserInfo.objects.filter...(username=user, password=pwd).first() if user_obj: """ 如果验证通过,则设置session...request.session["username"] = user_obj.username,经过某种算法加密后的数 ?
= request.POST.get('username') password = request.POST.get('password') code = request.POST.get...() == code.upper(): # 校验用户名和密码是否正确 user_obj = auth.authenticate(request,username...=username,password=password) if user_obj: # 保存用户状态 auth.login...(request,user_obj) back_dic['url'] = '/home/' else: back_dic...app重置登录密码的时候,发现其验证码显示效果和本文效果竟然神似~,于是捡起来写了此文 其手机app验证码效果如下 See you ~
接收一个HttpRequest实例作为第一个参数 c....POST和GET请求 GET请求与传参 - method - GET POST提交数据 QueryDict对象 方法练习 # python manage.py shell >>> from django.http..., 'user_login.html') elif request.method == "POST": #post就要获取用户名和密码 username = request.POST.get...("username") password = request.POST.get("password") # 根据用户名取出这个记录是否存在 user_obj =...authenticate(username=username,password=password) if user_obj: login(request,user_obj
二、可能出错的原因 导致HttpClientErrorException: 400的原因可能有很多,以下是常见的几种: 请求体格式错误:发送的请求体格式不符合服务器要求,可能是JSON格式错误或缺少必需字段...请求参数有误:请求URL中缺少必需的查询参数或路径参数。 请求头不完整:缺少必需的请求头信息,如Content-Type或Authorization等。...对象和请求头一并传入 HttpEntityUser> request = new HttpEntity(newUser, headers); // 发送POST请求,获取响应 ResponseEntity...五、注意事项 在编写代码时,需要注意以下几点: 请求头的完整性:确保所有必需的请求头信息已正确设置,如Content-Type和Authorization等。...请求体格式的正确性:确保请求体格式符合服务器的要求,特别是在发送JSON数据时,确保字段名和数据类型正确。 参数的完整性:确保所有必需的查询参数和路径参数已正确传递。
', } settings.py 1.4 user/urls.py 增加获取token接口和刷新token接口 from django.urls import include, path from rest_framework.authtoken.views...) user_obj = User.objects.filter(id=request.user.pk).first() if user_obj.vip.id !...= User.objects.create(**validated_data) token = create_token(user_obj) user_obj.token...= token return user_obj #2.set_password加密 # user_obj = User.objects.create(...() # token = create_token(user_obj) # user_obj.token = token # return user_obj
领取专属 10元无门槛券
手把手带您无忧上云