django学习笔记——类视图

本文介绍了Django中各类视图的应用方法,包括基础View、TemplateView及ListView的使用技巧,并详细展示了如何通过Paginator实现数据分页。

View

视图使用

这个类是通用类的基类,其它类都是继承自这个类

  • views.py
    from django.http import HttpResponse
    from django.views import View
    
    
    class IndexView(View):
        def get(self, request):
            return HttpResponse("以get方式请求")
    
        def post(self, request):
            return HttpResponse("以post方式请求")
    
  • ulrs.py
    from django.urls import path
    from . import views
    
    
    urlpatterns = [
        path("", views.IndexView.as_view(), name="index"),
    ]
    

继承View类视图之后,可以定义getpost等请求方式,也可以单独定义一个请求方式。如果只定义一种请求方式,而在访问时以另一种方式请求,就会发生错误,这时我们可以定义http_method_not_allowed函数来提示错误。

from django.http import HttpResponse
from django.views import View


class IndexView(View):
    def post(self, request):
        return HttpResponse("以post方式请求")

    def http_method_not_allowed(self, request):
        return HttpResponse("您当前采用的method是:%s,本视图只支持使用post请求!" % request.method)

除了getpost请求方式之外,还有 [‘put’,‘patch’,‘delete’,‘head’,‘options’,‘trace’]

TemplateView

django.views,generic.base.TemplateView这个类视图是专门用来返回模板的。

  • 两个常用属性
    • template_name: 存储模板的路径
    • get_context_data: 返回上下文数据, 也就是给模板传的参数

视图使用

  • 1、创建类视图之前先在工程的目录下创建一个templates文件夹,用于存放模板文件
  • 2、给setting.py文件里的TEMPLATES变量的DIRS键赋值 -> os.path.join(BASE_DIR, 'templates'
    在这里插入图片描述
  • 3、创建模板类视图
    • 需要在模板中传参时
      • views.py
        from django.views.generic.base import TemplateView
        
        
        class Temp_View(TemplateView):
            template_name = 'school.html'
        
            def get_context_data(self, **kwargs):
                context = {
                 
                 "username": 'cmy'}
                return context
        
      • urls.py
        from django.urls import path
        from . import views
        
        
        urlpattern
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员陈_明勇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值