29、Django实战第29天:修改密码和头像
修改头像
1、上传头像,我们需要的对它做一个forms验证,编辑users.forms.py
...
from .models import UserProfile class UploadImageForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['image']
2、编辑users.views.py
class UploadImageView(LoginRequiredMixin, View):
def post(self, request):
image_form = UploadImageForm(request.POST, request.FILES)
if image_form.is_valid():
pass
3、配置url,编辑users.urls.py
...
from .views import UploadImageView urlpatterns = [
...
url(r'image/upload/$', UploadImageView.as_view(), name='upload_image'),
]
4、编辑前端页面
5、断点调试
我们发现form已经取到上传的图片放到了cleaned_data中,这里面的数据是已经通过验证的。因此我们可以直接把它取出来保存到数据库中
因为我们用的是mode.form,所以我们可以直接保存到数据库,优化代码如下:
最后我们需要返回一个json 信息,因为,这里修改头像是个异步的操作
...
from django.http import HttpResponse class UploadImageView(LoginRequiredMixin, View):
def post(self, request):
image_form = UploadImageForm(request.POST, request.FILES, instance=request.user)
if image_form.is_valid():
image_form.save()
return HttpResponse('{"status":"success"}', content_type='application/json')
else:
return HttpResponse('{"status":"fail"}', content_type='application/json')
修改密码
编辑users.views.py
...
import json class UpdatePwdView(LoginRequiredMixin, View):
def post(self, request):
ResetPwd_form = ResetPwdForm(request.POST)
if ResetPwd_form.is_valid():
pwd = request.POST.get('pwd', '')
repwd = request.POST.get('repwd', '')
if pwd == repwd:
user = UserProfile.objects.get(email=request.user.email)
user.password = make_password(pwd)
user.save()
return HttpResponse('{"status":"success"}', content_type='application/json')
else:
return HttpResponse('{"status":"fail", "msg":"密码不一致"}', content_type='application/json')
else:
return HttpResponse(json.dumps(ResetPwd_form.errors), content_type='application/json')
配置url,编辑users.urls.py
...
from .views import UpdatePwdView urlpatterns = [
...
url(r'update/pwd/$', UpdatePwdView.as_view(), name='update_pwd'),
]
编辑前端页面usercenter-base.html
提交地址配置在deco-user.js中
29、Django实战第29天:修改密码和头像的更多相关文章
- DJANGO里让用户自助修改密码
参考了网上的实现,最终实现的各代码如下: changepwd.html模板文件: {% extends "Prism/index.html" %} {% load staticfi ...
- django实战(四)--修改数据
这节我们实现修改数据的功能,惯例,还是先上代码: urls.py urlpatterns=[ path('curd/edit/',views.curd_edit,name='curdedit'), p ...
- [Django实战] 第5篇 - 用户认证(修改密码)
上一篇我们实现了用户认证系统的登录模块,这一篇实现修改密码模块. 同样地,我们首先得给修改密码创建表单(forms.py): class ChangepwdForm(forms.Form): oldp ...
- Django admin修改密码
django的admin用户被我多动症一样的测试,给密码弄丢了,需要重置. 从数据库重置的可能性为0,因为django对于密码有保护策略.考虑从运行程序的地方进行重置: 1.在程序的文件夹下,执行这样 ...
- Django的内置登录、退出、修改密码方法
Django中内置的登录.退出.修改密码方法. 1.url.py中使用django.contrib.auth中的views函数,django.views.generic中的TemplateView函数 ...
- 【Python】Django auth 修改密码如何实现?
使用示例1.创建用户>>> from django.contrib.auth.models import User>>> user = User.objects.c ...
- django用户认证系统——修改密码6
再此之前我们已经完成了用户登录.注册.注销等功能,接下来让我们继续为用户提供修改密码的功能.该功能 Django 的 auth 应用也已经为我们提供,过程几乎和之前的登录功能完全一样. 编写修改密码模 ...
- Django admin 修改密码
Django admin 修改密码 问题:Django的admin 用户忘记密码或修改密码,在auth_user表中password字段是加密的,所以需要以下方法进行修改. 方法一: python m ...
- FastAPI(六十九)实战开发《在线课程学习系统》接口开发--修改密码
之前我们分享了FastAPI(六十八)实战开发<在线课程学习系统>接口开发--用户 个人信息接口开发.这次我们去分享实战开发<在线课程学习系统>接口开发--修改密码 我们梳理一 ...
随机推荐
- BJOI2018
BJOI2018 省选挂完,是时候更一篇题解了.对于鬼畜结论题我只放结论不给证明,不要打我-- day1 二进制 试题描述 pupil 发现对于一个十进制数,无论怎么将其的数字重新排列,均不影响其是不 ...
- 【CF MEMSQL 3.0 E. Desk Disorder】
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- MySQL使用笔记(一)安装配置
By francis_hao Nov 27,2016 一般软件的安装都是可以通过源码和安装包安装,源码安装可配置性好些,安装包安装比较省事,况且使用yum也可以解决依赖的问题,基本实现了一键 ...
- (一)STM32固件库详解(转载)
本篇博文是转载自emouse,因为不能直接转载,所以是复制过来再发布的. emouse原创文章,转载请注明出处http://www.cnblogs.com/emouse/ 1.1 基于标准外设库的 ...
- NOIP2003 神经网络(bfs)
NOIP2003 神经网络 题目背景: 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别.函数逼近及贷款风险评估等诸多领域有广泛的应 ...
- 构建一个类jq的函数库
jqfree core var $ = function(selector, context) { return new $.fn.init(selector, context); }; $.fn = ...
- shell编程---变量赋值
echo $filen | awk -F. '{print $3}' 怎么把上边这行脚本产生的字串赋给一个变量啊,实际上会产生一个数, 这个变量用来存这个数.格式应该是怎么写的? a=`echo $ ...
- maven项目在eclipse tomcat正常运行
转摘自:http://binary.duapp.com/2013/10/1577.html 配置下部署路径即可.
- Cannot read property 'resetFields' of undefined 问题及引申
问题描述: 使用element开发我的后台系统,编辑和新增使用了同一个弹出框<el-dialog><el-form></el-form></el-dialog ...
- 有关getClassLoader().getResourceAsStream(fileName)、class.getResourceAsStream(fileName)和().getContextClassLoader().getResourceAsStream(fileName)的区别
一:前言 在自己获取属性时,碰见了XX.class.getResourceAsStream(fileName),自己对这个其实不是很理解,上网查了下资料,又看到了上述的几个,所以就研究了下. 二:内容 ...