当前位置:首页 > 编程教程 > Python技术文章 > django 类视图的使用方法详解

django 类视图用法示例代码

  • 发布时间:
  • 作者:码农之家
  • 点击:90

这篇文章主要知识点是关于django、类视图、的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

Python全栈数据工程师养成攻略
  • 类型:Python全栈大小:129.7 MB格式:PDF作者:张宏伦
立即下载

django 类视图的使用方法详解

 前言

当我们在开发一个注册模块时。浏览器会通过get请求让注册表单弹出来,然后用户输完注册信息后,通过post请求向服务端提交信息。这时候我们后端有两个视图函数,一个处理get请求,一个处理post请求。两个视图函数都是不同的名字。

但是随着开发的进行。当你想要找到注册模块的这两个视图,太麻烦了。如果这两个视图函数能放在一起,归成一个类,作为注册模块的类。这样日后的维护将会方便很多。这时候,django的类视图就能实现这个功能了。

对比

在没有类视图前,视图是这样的:

def get_register_page(request):
  return render(request,"注册页面.html")

def post_register_page(request):
  # 处理请求,把信息写进数据库
  return HttpResponse("注册成功")

有了django的类视图,视图是这样的:

class register(View):
  def get(self,request):
    return render(request,"register.html")

  def post(self,request):
    title = request.POST.get("name")
    content = request.POST.get("password")
    return HttpResponse("注册成功")

别漏了要在项目的urls设置:

url(r'^register$',views.register.as_view())

注意,as_view()是用来分发请求方法的。可以把同一个页面的不同请求方法分发给不同的视图来执行。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

Python 相关电子书
学习笔记
网友NO.123560

详解Django中类视图使用装饰器的方式

类视图使用装饰器 为类视图添加装饰器,可以使用两种方法。 为了理解方便,我们先来定义一个为函数视图准备的装饰器(在设计装饰器时基本都以函数视图作为考虑的被装饰对象),及一个要被装饰的类视图。 def my_decorator(func): def wrapper(request, *args, **kwargs): print('自定义装饰器被调用了') print('请求路径%s' % request.path) return func(request, *args, **kwargs) return wrapperclass DemoView(View): def get(self, request): print('get方法') return HttpResponse('ok') def post(self, request): print('post方法') return HttpResponse('ok') 4.1 在URL配置中装饰 urlpatterns = [ url(r'^demo/$', my_decorate(DemoView.as_view()))] 此种方式最简单,但因装饰行为被放置到了url配置中,单看视图的时候无法知道此视图还被添加了装饰器,不利于代码的完整性,不建议使用。 此种方式会为类视图中的所有请求方法都加上装饰器行为(因为……

网友NO.987398

django如何通过类视图使用装饰器

需求: 当我们想禁止ip黑名单访问我们的某些页面时,例如注册页面。应该怎么操作呢? 解决方案: 这时候我们可以设计一个装饰器,过滤ip黑名单。 装饰器的写法如下: from functools import wrapsdef ban_ip(func): @wraps(func) def wrapper(request,*args,**kwargs): IP = request.META.get("REMOTE_ADDR") if IP in ["127.0.0.1"]: # 可以添加ip黑名单到列表里 return HttpResponse("禁止访问") return func return wrapper 如果不是类视图,可以这样使用: @ban_ipdef get_register(request): return render(request,"注册页面.html")def post_resiger(request): name = request.POST.get("name") password = request.POST.get("password") print(name) print(password) return HttpResponse("注册成功") 这样就可以达到一个效果。如果ip在黑名单里,那么访问注册页面时会弹出“禁止访问”。 需求: 但是,问题来了,当我们使用类视图时,定义视图函数时还有一个self参数。因……

<
1
>

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com