第五章 探究CBV视图

第五章探究CBV视图

5.1数据显示视图

CBV(class base views):以类的形式实现响应与请求处理

四个视图类:

(1)RedirectView:实现HTTP重定向

(2)TemplateView:基础视图,将数据传递给HTML模板,一般只定义get请求的处理方法

(3)ListView:在TemplateView基础上将数据以列表显示

(4)DetailView:在TemplateView基础上将数据详细显示

5.1.1 RedirectView

#项目目录下的urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(('index.urls','index'),namespace='index')),
]
#app(index)目录下urls.py
from django.urls import path
from index.views import *

urlpatterns=[
    path('',index,name='index'),
    #自定义turnTo类继承RedirectView,所以要使用as_view()方法,对视图类turnTo进行实例化处理
    path('turnTo',turnTo.as_view(),name='turnTo'),
]
#app(index)目录下views.py
from django.shortcuts import render
from django.views.generic import RedirectView

def index(request):
    return render(request,'index.html')

class turnTo(RedirectView):

    #设置属性
    #根据属性值的真假选择重定向方式,true,HTTP状态码为301,否则为302
    permanent = False
    #代表重定向的路由地址
    url=None
    #代表重定向的路由命名
    pattern_name = 'index:index'
    #是否将当前路由地址的请求参数传递到重定向的路由地址
    query_string=True

    #重写get_redirect_url方法
    def get_redirect_url(self, *args, **kwargs):
        print('This is get_redirect_url')
        return super().get_redirect_url(*args,**kwargs)

    #重写get方法
    def get(self,request,*args,**kwargs):
        print(request.META.get('HTTP_USER_AGENT'))
        return super().get(request,*args,**kwargs)

5.1.2 TemplateView

#项目目录下的urls.py
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include(('index.urls','index'),namespace='index')),
]
#app目录下的urls.py
from django.urls import path

from index.views import *

urlpatterns=[
    path('',index.as_view(),name='index'),
]
#app目录下的views.py
from django.shortcuts import render

# Create your views here.
from django.views.generic import TemplateView

class index(TemplateView):
    # 设置属性
    #将模板文件index.html作为网页文件
    template_name='index.html'
    #设置模板引擎,默认值为None,默认使用配置文件中TEMPLATES设置的模板引擎BACKEND
    template_engine=None
    #设置响应内容的数据格式
    content_type=None
    #为模板变量设置变量值
    extra_context={'title':'this is Get'}

    #重定义get_context_data()方法
    #在变量context里新增数据value
    def get_context_data(self, **kwargs):
        context=super().get_context_data(**kwargs)
        context['value']='I am  mydjango'
        return context

    #定义HTTP的post请求处理方法

    def post(self,request,*args,**kwargs):
        self.extra_context={'title':'This is POST'}
        context=self.get_context_data(**kwargs)
        return self.render_to_response(context)
#index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h2>Hello ,{{ title}}</h2>
<div>{{ value }}</div>
<br>
<form action="" method="post">
    {% csrf_token %}
    <input type="submit" value="Submit">
</form>
</body>
</html>

5.1.3 ListView

5.1.4 DetailView

5.2数据操作视图

5.2.1 表单视图FormView

5.2.2 新增视图CreateView

5.2.3 修改视图UpdateView

5.2.4 删除视图DeleteView

5.3日期筛选视图

未完待续。。。。
参考书籍《Django web应用开发实战》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值