视图函数也可以以类的形态呈现

》视图函数VS视图类

视图类的说明

》路由的写法

把注册视图函数转变为类视图

1,导入视图类

from django.views.generic import View

2,定义视图类

它需要继承前面导入的View类

格式如下:

# 类视图
class RegisterView(View):"""注册"""def get(self, request):"""get请求执行"""passdef post(self, request):"""post请求执行"""pass

3 路由的对应

路由的对应要换种写法了

格式为

path(路径,视图类.as_view())

例如本例中:

    path('register/', views.RegisterView.as_view(), name='register'),  # 后台管理

视图类的对应写法

paht(路径,views.视图类.as_view()

》按照这三步操作,类视图就可以工作了

往get方法中填入代码

》把原来的get分支中的代码转一下


转移后

往post方法中添加代码

同理,把原视图post分支中的代码弄过来

拿这些代码

转移后的代码

注册测试

发现一切正常

》注册类的代码

class RegisterView(View):"""注册"""def get(self, request):"""get请求执行"""print('view,get')return render(request, "register.html")def post(self, request):"""post请求执行"""print('view,post')user_name = request.POST.get("user_name")password = request.POST.get("pwd")email = request.POST.get("email")allow = request.POST.get("allow")# 数据校验print('user_name', user_name)print('password', password)print('email', email)# 校验:是否有空数据if not all([user_name, password, email]):print('有不合法的数据空数据进来了')return render(request, "register.html",{"errmsg": "数据不完整"})# 校验:邮箱格式is_mail = re.match(r'^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email)print('ismail', is_mail)if not is_mail:print('不是邮箱')return render(request, "register.html",{"errmsg": "邮箱格式不正确"})# 校验:是否有勾选协议if allow != "on":print('得同意协议')return render(request, "register.html",{"errmsg": "请同意协议"})# 用户重名的验证 todo 临时有事,回来再补try:user = User.objects.get(username=user_name)print('用户查询结果', user)except User.DoesNotExist:user = Noneprint('查到重名的')if user:print('用户名已经存在')return render(request, "register.html",{"errmsg": "用户名已经存在请更换用户名"})# 进行业务处理,即,进行用户注册user = User.objects.create_user(user_name, email, password)print('user', user)# 生成要跳转的页面from django.urls import reversejump_url = reverse("goods:index")# 返回响应return redirect(jump_url)

小结

类视图的使用

三个步骤

  1. 导入View类
  2. 在views.py中自定义一个类,继承View类
  3. 路由对应那里,通过 视图类.av_view()来与路径产生对应

dj鲜生-13-类视图-使用篇相关推荐

  1. dj鲜生14-类视图的实现原理+代码

    截至当前的代码: https://cloud.189.cn/t/ZbERBjq6fmeu (1909221746) 路由系统的路径对应 路由的路径规则,一般是会与一个视图函数对应的 然而在使用类视图时 ...

  2. dj鲜生-10200818-商品首页展示-静态页下载资源

    静态页资源下载 https://cloud.189.cn/t/fqq6Vr36nIf2 (鲜生电商-静态页面) 商品首页模板处理 index.html页首理 生鲜首页的抽取过程,详解 - 知乎 htt ...

  3. dj鲜生-38-项目上线简介-从本地小项目到云服务的调试

    小结 项目上线要做的事情有: 代码传到linux虚拟机上 准备相关的运环境 配置好ip与端口 让程序跑起来 项目上线,就是把windows上的代码,拷备到linux上,让代码跑起来 在win上跑代码的 ...

  4. dj鲜生-01-新建项目-配置数据库

    静态页面地址 静态文件资源下载: https://cloud.189.cn/t/U7vAjafAfAVb (鲜生电商-静态页面) 创建一个项目 pycharm打开项目 数据库的准备 新建一个数据库 & ...

  5. dj鲜生-28-登陆验证父类的使用-Mixin类的定义

    操作小结 创建一个目录和一个文件 文件中写一个登陆验证的mixin类 from django.contrib.auth.decorators import login_required class L ...

  6. dj鲜生-37-order应用-模型类创建

    主要两张表 进入到订单应用 初始也是空的 订单模型类 一个注意点 如果我的字段,要关联另一个应用的模型类,见框框 应用名.模型类名 用这种方式来跨应用关联 订单商品模型类 class OrderGoo ...

  7. dj鲜生-36-商品应用-其它模型类的创建-完善goods应用的数据表

    用户模块处理的差不多了 准备商品模块 总共七张表,要做模型类 原始models 就是一个空的 开始弄进去代码 开始打代码 商品模型类的定义 from django.db import models f ...

  8. dj鲜生-11-优化url-合并视图函数

    目标: register_handle去掉 与register合并在一个视图函数中 分支逻辑 如果,是get请求,表求在请求得到一个页面的信息 如果是post请求,就表示是在提交数据 >做法 代 ...

  9. dj鲜生-03-用户模块的创建与模型类的创建

    用户模块创建,app user (base) G:\dailyfresh>python manage.py startapp user 用户应用的注册 在配置中添加应用的名称即可 回顾要设计的模 ...

最新文章

  1. java 扫描包框架_在Android中实现类似Spring的软件包扫描
  2. Ambient occlusion
  3. solidworks钣金插件_高效掌握SolidWorks钣金零件加工设计概念
  4. Swift基础之闭包
  5. 比特币的区块结构解析
  6. pytorch注意事项
  7. double类型最大值_Java后端精选基础教程:Java 中的基本数据类型「连载 6」
  8. spring-boot基础知识
  9. c语言的关键字怎么编辑,C语言的关键字
  10. 教你怎么用爬虫程序采集企业信息及电话邮箱等信息(以企查查为例)
  11. 4G标准LTE FDD与LTE TDD的不同
  12. 续上篇文章中的stmt使用方法。
  13. 【转】SAP 各种记账凭证的更改冲销
  14. 开汉庭酒店需要什么条件?
  15. linux版印象笔记 for deepin
  16. 【干货】PCB线宽与电流关系
  17. solr整合paoding分词注意的一些细节
  18. 比较两种计算机语言的英语论文,英语计算机论文大纲模板样本 英语计算机论文提纲怎样写...
  19. 认沽期权是什么意思:认沽期权怎么交易
  20. 南非醉茄来源的天然产物之活性大盘点

热门文章

  1. u盘被保护怎样解除?(第十招)
  2. HTML极客自适应网址导航模板,更换背景+看板娘
  3. 大气自适应会员中心帝国cms模板
  4. YzmCMS全新轻爽极简风格模版主题
  5. python图例重复显示_matplotlib中的图例中有重复项?
  6. HTML二刺螈网址导航模板
  7. 小程序博客资源娱乐网带微信流量主激励视频
  8. 无法在WEB服务器上启动调试,Web 服务器配置不正确 解决
  9. 做一个项目,平时都用到哪些工具提高效率(上)[转]
  10. 使用 jQuery Mobile 与 HTML5 开发 Web App (十二) —— jQuery Mobile 页面事件与 deferred