29django实战第29天:修改密码和头像

何波安的博客 何波安的博客     2022-10-28     715

关键词:

修改头像

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中

29flask实战第29天:cms用户名渲染和注销功能实现(代码片段)

这节来完成用户名渲染和注销的功能,目前用户名在前端页面是写死的,我们需要动态的展示出来用户名渲染实现用户名动态展示,其中一种方法就是在视图函数,根据session信息,获取到userid,通过该id找到用户信息,再通过模... 查看详情

31flask实战第31天:cms后台修改密码(代码片段)

cms后台修改密码界面布局先创建cms_resetpwd.html页面,继承cms_base.html%extends‘cms/cms_base.html‘%%blocktitle%修改密码-CMS管理系统%endblock%%blockpage_title%个人中心>>>修改密码%endblock%%blockmain_content%暂无%endbl 查看详情

linux第15天:(08月29日)练习和作业

Linux第15天:(08月29日)练习和作业     管理磁盘配额  fdiskpartx-a/dev/sdamount/dev/sda6/homedfcd/homemv*/homevim/etc/fstab           查看详情

17django实战第17天:机构详情展示

1、进入xadmin添加测试数据(教师、课程)2、把以下4个前端页面复制到templates中先打开这几个页面分析,它们和之前的课程机构列表页是不一样的机构,且没有共同的部分,但是这4个页面却是类似的  查看详情

29_java_数据库_第29天(jdbcdbutils)_讲义

今日内容介绍1、JDBC2、DBUtils01JDBC概念和数据库驱动程序*A:JDBC概念和数据库驱动程序*a:JDBC概述*JDBC(JavaDataBaseConnectivity,java数据库连接)是一种用于执行SQL语句的JavaAPI,可以为多种关系数据库提供统一访问,它由一组用Java语言编... 查看详情

28django实战第28天:个人信息展示

从今天开始,我来完成个人中心部分,前端页面如下1、浏览这些页面可以发现,它们和base.html是有区别的,因此,它们需要新建一个模板usercenter-base.html2、把usercenter-info.html的内容拷贝到usercenter-base.html,用block把会不同的部分... 查看详情

13django实战第13天:分页列表功能

我们看课程机构列表页是需要分页的为了完成分页功能,我们需要用到Django的一个开源开发库django-pure-paginationworkonmxonlinepipinstalldjango-pure-pagination   查看详情

15django实战第15天:我要学习咨询

今天完成的是课程机构列表页面的最后一个模块:我要学习我们在models中创建对应的表时UserAsk。之前我们讲过:在做表单的时候,我们可以通过forms先对提交的数据做一次 查看详情

第37月第29天avplayer截屏

1.-(void)displayLinkCallback:(CADisplayLink*)sender{CMTimetime=[snapshotOutputitemTimeForHostTime:CACurrentMediaTime()];if([snapshotOutputhasNewPixelBufferForItemTime:time]){lastSnapshotPixelBuffer=[s 查看详情

22django实战第22天:课程评论

1、编辑course-comment.html2、编辑courses.views.pyclassCourseCommentView(LoginRequiredMixin,View):defget(self,request,course_id):course=Course.objects.get(id=course_id)returnrender(request,‘course-comment.ht 查看详情

24django实战第24天:讲师列表页

1、复制teracher-list.html到templates目录下2、编辑teacher-list.html,继承base模板3、编辑organization.views.py...from.modelsimportTeacherclassTeacherListView(View):defget(self,request):all_teachers=Teacher.objects.all()r 查看详情

linux第15天:(08月29日)linux高级文件系统管理

Linux第15天:(08月29日)Linux高级文件系统管理  本章内容设定文件系统配额设定和管理软RAID设备配置逻辑卷设定LVM快照btrfs文件系统  配置配额系统综述在内核中执行以文件系统为单位启用对不同组或者用户的策略不... 查看详情

26django实战第26天:配置全局导航

1、编辑index.html,继承base.html2、编辑base.html,根据是否登录不同显示 问题:当我们选中一个导航,选中样式并没有成为选中的状态因此我们编辑base.html对导航中进行判断 然后我们可以用同样的方式来判断授课讲师我们先... 查看详情

100天精通oracle-实战系列(第9天)sqlplus基础使用和进阶玩法

SQLPlus基础使用和进阶玩法(第9天)->返回总目录<-SQLPlus是进行Oracle操作的主要前台工具,用户名和密码分别为用户名和密码,用于连接ORACLE数据库。SQLPlus是一个交互式批处理查询工具,随每个Oracle数据库安装一起安装。它... 查看详情

第15月第29天ffmpegaverror_eof

1.在直播时返回AVERROR_EOF代表流结束吗?但对方还在直播,没有结束。 intret=av_read_frame(mContext,pkt); if(ret==AVERROR_EOF) 查看详情

100天精通python(基础篇)——第29天:标准库sys(代码片段)

文章目录前言sys作用常用变量sys.versionsys.maxsizesys.maxunicodesys.pathsys.platformsys.argvsys.executablesys.byteordersys.version_infosys.api_versionsys.stdin/sys.stdout/sys.stderr常用方法sys.exit()sys.modulessys.mod 查看详情

六月集训(第29天)——分而治之

前言        此为《英雄算法联盟:算法集训》的内容,具体内容详见:知识星球:英雄算法联盟-六月集训。加入星球后,即可享用星主CSDN付费专栏免费阅读的权益。       &... 查看详情

第20月第29天cocoa抽象工厂(代码片段)

1.在CocoaTouch框架中,类簇是抽象工厂模式在iOS下的一种实现,以NSArray举例,将原有的alloc+init拆开写:idobj1=[NSArrayalloc];//__NSPlacehodlerArray*idobj2=[NSMutableArrayalloc];//__NSPlacehodlerArray*idobj3=[obj1init];//__NSArrayI*idobj4 查看详情