首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于django的视频点播网站开发-step6-个人中心功能

从本讲起,我们开始个人中心功能的开发。个人中心里面包括个人资料、修改密码、订阅设置、意见反馈这四部分。通过这部分的开发,我们将会接触到更多django的用法。 <!...个人资料 这里主要是对个人资料进行编辑,先显示用户原有的信息,然后用户即可对其进行修改并保存,对于编辑功能,django有自己的解决方案,即通过通用视图类UpdateView对模型进行更改。...'), 可以看到,这里我们需要传一个int参数做为主键,并传递给视图类ProfileView。...,就实现了个人资料的更新,再次彰显了django框架的强大。...当更新成功后,django会回调get_success_url来将结果告诉模板,因此我们可以在get_success_url里面做一些定制的工作,我们可以传一些自己的参数。

1.2K00
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

    使用基于类的视图处理表单 表单的处理通常有3 个步骤: 初始的的GET (空白或预填充的表单) 带有非法数据的POST(通常重新显示表单和错误信息) 带有合法数据的POST(处理数据并重定向) 你自己实现这些功能经常导致许多重复的样本代码...注意这里我们是如何配置通用的基于类的视图的;我们自己没有写任何逻辑: #views.py from django.views.generic.edit import CreateView, UpdateView...除非你用另外一种方式定义表单类,该属性是必须的,如果没有将引发一个ImproperlyConfigured 异常。...最后,我我们来将这些新的视图放到URLconf 中: #urls.py from django.conf.urls import url from myapp.views import AuthorCreate...在这个视图中,请确保你没有将created_by 包含进要编辑的字段列表,并覆盖form_valid() 来添加这个用户: #views.py from django.views.generic.edit

    1.9K20

    每个前端开发者都可以开发一个属于自己的库或框架「Strve.js生态初步建成」

    前面一个多月是非常痛苦的,几乎是闭门造车。主要的难点是怎么将模板字符串转化成虚拟DOM结构,并且代码量控制在最小。然后将转化的虚拟DOM进行Diff算法,更有效的更新DOM。...下面,我将详细介绍Strve.js,如果有疑问或者其他问题可以留言哦!谢谢阅读!...Strve render updateView 是不是很简单!快来看看这三个API是什么意思?怎么使用它们? Strve 参数: string object 详细: 初始化Strve.js。...)} `; } export default template; 如果需要跳转到对应页面,使用strveRouter.routerLink()方法,可以传对应的路径和需要传的参数...,也可以直接传一个路径字符串。

    94840

    「Strve.js」可以将字符串转换为视图的JS库

    ⚡️ 快速地 超快的虚拟 DOM。 空间小 源代码文件大小仅仅4kb。 灵活地 易于灵活地拆装不同的代码块。 介绍 Strve.js是一个可以将字符串转换为视图的JS库。...Strve render updateView 是不是很简单!快来看看这三个API是什么意思?怎么使用它们? Strve 参数: string object 详细: 初始化Strve.js。...第一个参数传入需要挂载到HTML页面的节点选择器名称。第二个参数传入一个对象,第一个属性data表示的意思是状态对象,第二个属性template表示模板函数。...,并从模板字符串中的插值表达式中获取参数。...在底层的实现上,Strve.js 将模板字符串编译成虚拟 DOM 渲染函数,并把 DOM 操作次数减到最少。

    2.1K10

    能不能手写Vue响应式?前端面试进阶

    为了方便 模拟视图更新,这里创建了一个函数 updateView ,当数据更新时,调用 updateView ,模拟进行了视图更新(在 Vue 中表现为 template 模板中引用了该变量值的 DOM...API Object.defineProperty 进行封装,接受三个参数,监听的目标对象、属性名,以及属性值,一个target(对象)通过调用 defineReactive 就能够实现对 key(对应属性名...在这里的实例中,解决办法就比较简单粗暴了,只需要直接在 set 里将 set 接受的 value 放到 observe 函数里执行,就能够对 value 进行监听了,下面是最终的defineReactive...() Array.prototype[method].call(this, ...arguments) }})2、将需要监听的数组的原型指向自定义的特殊原型对原来的 observe 进行修改,加入数组判断...属性监听 的 全覆盖 ,需要对对象的属性进行 深度遍历,递归到底,所以对于性能的损耗是非常大的,特别是在初始化阶段,如果有大量的层级非常高的对象进行响应式监听的绑定,会 极大耗费 初始化时的 性能,导致拖慢

    60120

    Object.defineProperty也能监听数组变化?

    语法 Object.defineProperty(obj, prop, descriptor) 参数 obj 要定义属性的对象。 prop 要定义或修改的属性的名称或 Symbol 。...如果你想设置 data.name ,那就会将你传进来的值放到变量 name 里。 此时再访问 data.name 或者 name ,都会返回新赋予的值。...我创建了一个 updateView 方法,该方法模拟更新 DOM (类似 Vue的操作),但我这里简化成只是输出 “视图更新” 。因为这不是本文的重点。...大概的思路和编码流程顺序如下: 判断要监听的数据是否为数组 是数组的情况,就将数组模拟成一个对象 将数组的方法名绑定到新创建的对象中 将对应数组原型的方法赋给自定义方法 代码如下所示 // 触发更新视图...,如 Array.prototype.push = function() { updateView() ... } 因为这样会污染原生 Array 的原型方法,这样做会得不偿失。

    54620

    彻底理清前端单页面应用(SPA)的实现原理

    标签,其他都是js动态生态的内容 单页面应用实现步骤: 代码实现: 首先是一个静态模板文件 index.html <!...,hash改变并不会发送请求 开始实现Hash模式跳转: 使用类似发布订阅模式的方式,使用ES6的class实现: 初始订阅,每个不同的hash值,对应不同的函数调用处理。...: history.pushState() 在保留现有历史记录的同时,将 url 加入到历史记录中。...History模式下,刷新页面会404,需要后端配合匹配一个任意路由,重定向到首页,特别是加上Nginx反向代理服务器的时候 我们需要换个思路,我们可以罗列出所有可能触发 history 改变的情况,并且将这些方式一一进行拦截...实现History 这里想多留些时间写其他源码,这篇文章写得非常好,大家也可以去看看,本文很多借鉴他的。

    3.1K41

    基于django的视频点播网站开发-step9-后台视频管理功能

    这一讲非常重要,因为你将学习到一些之前没有学过的技术,比如大文件上传技术。...个人博客:mypython.me 视频上传 我们先来实现视频的上传,视频的上传采用的是分块上传的策略,并用了分块上传类库:django_chunked_upload,使用该类库,再配合前端上传js库(jquery.fileupload.js...,视频的上传采用的是分块上传的策略,前端使用的是js上传库(jquery.fileupload.js),后端使用的是django_chunked_upload,上传的逻辑是这样的:前端先选择一个文件,通过...将通过UpdateView自动为你更新视频信息。...编辑对应的视图类是ClassificationEditView,它的实现超级简单,继承UpdateView即可。

    1.7K30

    能不能手写Vue响应式?前端面试进阶

    为了方便 模拟视图更新,这里创建了一个函数 updateView ,当数据更新时,调用 updateView ,模拟进行了视图更新(在 Vue 中表现为 template 模板中引用了该变量值的 DOM...API Object.defineProperty 进行封装,接受三个参数,监听的目标对象、属性名,以及属性值,一个target(对象)通过调用 defineReactive 就能够实现对 key(对应属性名...在这里的实例中,解决办法就比较简单粗暴了,只需要直接在 set 里将 set 接受的 value 放到 observe 函数里执行,就能够对 value 进行监听了,下面是最终的defineReactive...() Array.prototype[method].call(this, ...arguments) }})2、将需要监听的数组的原型指向自定义的特殊原型对原来的 observe 进行修改,加入数组判断...属性监听 的 全覆盖 ,需要对对象的属性进行 深度遍历,递归到底,所以对于性能的损耗是非常大的,特别是在初始化阶段,如果有大量的层级非常高的对象进行响应式监听的绑定,会 极大耗费 初始化时的 性能,导致拖慢

    59810

    能不能手写Vue响应式?前端面试进阶_2023-02-27

    为了方便 模拟视图更新,这里创建了一个函数 updateView ,当数据更新时,调用 updateView ,模拟进行了视图更新(在 Vue 中表现为 template 模板中引用了该变量值的 DOM...,对 API Object.defineProperty 进行封装,接受三个参数,监听的目标对象、属性名,以及属性值,一个target(对象)通过调用 defineReactive 就能够实现对 key...在这里的实例中,解决办法就比较简单粗暴了,只需要直接在 set 里将 set 接受的 value 放到 observe 函数里执行,就能够对 value 进行监听了,下面是最终的defineReactive...() Array.prototype[method].call(this, ...arguments) } }) 2、将需要监听的数组的原型指向自定义的特殊原型 对原来的 observe 进行修改...属性监听 的 全覆盖 ,需要对对象的属性进行 深度遍历,递归到底,所以对于性能的损耗是非常大的,特别是在初始化阶段,如果有大量的层级非常高的对象进行响应式监听的绑定,会 极大耗费 初始化时的 性能,导致拖慢

    64130

    Art of Android Development Reading Notes 8

    (2)通过WindowManager添加View的过程:将一个Button添加到屏幕坐标为(100,300)的位置上 mFloatingButton = new Button(this); mFloatingButton.setText...此标记会同时启用FLAG_NOT_TOUCH_MODAL,最终事件会直接传递给下层的具有焦点的window; FLAG_NOT_TOUCH_MODAL:在此模式下,系统会将window区域外的单击事件传递给底层的...[奇怪的是我删除这个标记还是在锁屏看到了添加的组件orz] type参数表示window的类型,window共有三种类型:应用window,子window和系统window。...注意,应用window的层级范围并不是1~999哟WindowManager继承自ViewManager,常用的只有三个方法:addView、updateView和removeView。...因为如果某个应用弹出太多的Toast会导致其他应用没有机会弹出Toast。 其他学习资料 1.Android应用开发之(WindowManager类使用) OK,本章结束,谢谢阅读。

    43710
    领券