WEB开发django-视图-CBV

文章介绍了在Django中如何使用路由匹配视图类,强调了在urls.py中需添加.as_view()后缀来调用视图类,并且在视图类中必须继承View。当请求到达时,Django会自动判断请求类型并执行相应的方法。示例代码展示了自定义dispatch方法以增强程序功能,并给出了与之交互的HTML表单。
摘要由CSDN通过智能技术生成

1:简历

在这里我们使用路由匹配视图类(而不是视图函数)

2:路由(urls.py)

from django.urls import path,re_path,include
from app01 import views
urlpatterns = [
    path("index1/", views.index1.as_view()), #在使用路由匹配视图类的时候:寻找视图类的时候必须加后缀.as_view()

注意:在路由匹配视图类的时候:必须在视图类名加上后缀.as_view()

3:视图(views.py)

(1)导包:

from django.views import View

注意:在视图类中写的类,必须继承View否则会报错

from django.views import View
class index1(View):
    """路由匹配类的时候类必须继承:View"""
    """不必我们直接做判断他是什么方法,django会给我们自动判断他是什么方法
    并自动执行相对应的方法
    """
    def get(self,request):
        """get请求必须给一个参数request来接受信息"""
        return render(request,"index1.html")

    def post(self,requset):
        return HttpResponse("成功进入post请求")

(2):顺序

用户输入对应的url----进入django的路由------django路由匹配视图类-----进入视图类后,先执行我们继承View类的dispatch方法,判断他是什么方法,然后进入我们写的类方法中.

在这里我们可以自己写dispatch方法,以便更加完善我们的程序

class index1(View):
    """路由匹配类的时候类必须继承:View"""
    """不必我们直接做判断他是什么方法,django会给我们自动判断他是什么方法
    并自动执行相对应的方法
    """
    def dispatch(self, request, *args, **kwargs):
        """在进入视图类的index1中先执行dispatch函数"""
        print("先开始走这里面")
        # 调用我们继承View类方法中的dispatch函数,super(index1,self)第一个参数必须是视图类的名字
        obj=super(index1,self).dispatch(request, *args, **kwargs)
        print("出来的要结束了")
        return obj

    def get(self,request):
        """get请求必须给一个参数request来接受信息"""
        return render(request,"index1.html")
    def post(self,requset):
        a=requset.POST.get("name")
        return HttpResponse(a)

html(index1.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post" action="/index1/">
        {% csrf_token %}
    <input type="text" name="name"/>
    <input type="submit" value="提交"/>
        </form>
</body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值