Django 视图系统

from django.shortcuts import HttpResponse, redirect, render   这个就不解释了

最开始看到的视图    每个视图负责返回一个HttpResponse对象。

from django.shortcuts import HttpResponse, redirect, render
# request ----请求对象
# 解释:当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。
# 然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。

def testindex(request):
    print(request.GET)
    print(request.POST)
    return HttpResponse("OK")

视图分两种写法

1.函数视图

# 函数视图
from django.shortcuts import HttpResponse, redirect, render
from django.views import View


def testindex(request):
    print(request.GET)
    print(request.POST)
    return HttpResponse("OK")

2.类视图  

from django.shortcuts import HttpResponse, redirect, render
from django.views import View
# 需要继承  django.views 下面的 View类
class Index(View):
    def get(self, request):
        return render(request, 'index.html')

    def post(self):
        pass

# 解释如果 走的是get请求  就是执行get函数,  发的请求如果是post,就执行post函数
url需要做修改  ------------->   url(r'^index', Index.as_view(),name='index'),

给视图加装饰器

def wrapper(func):
    def inner(*args, **kwargs):
        start_time = time.time()
        ret = func(*args, **kwargs)
        end_time = time.time()
        print("used:", end_time-start_time)
        return ret
    return inner


# FBV版添加班级
@wrapper
def add_class(request):
    if request.method == "POST":
        class_name = request.POST.get("class_name")
        models.Classes.objects.create(name=class_name)
        return redirect("/class_list/")
    return render(request, "add_class.html")

 

类中的方法与独立函数不完全相同,因此不能直接将函数装饰器应用于类中的方法 ,我们需要先将其转换为方法装饰器。

Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器。

from django.vies import View
from django.utils.decorators import method_decorator
from django.shortcuts import render, HttpResponse, redirect

def wrapper(func):
    def inner(*args, **kwargs):
        start_time = time.time()
        ret = func(*args, **kwargs)
        end_time = time.time()
        print("used:", end_time-start_time)
        return ret
    return inner

class Login(View):
    

    @method_decorator(加功能的函数)
    def get(self, request):
        return render(request, "login.html")

    def post(self, request):
        print(request.POST.get("user"))
        return HttpResponse("Login.post")

request请求对象的属性


    path_info     返回用户访问url,不包括域名

    method        请求中使用的HTTP方法的字符串表示,全大写表示。

    GET              包含所有HTTP  GET参数的类字典对象

    POST           包含所有HTTP POST参数的类字典对象

    body            请求体,byte类型 request.POST的数据就是从body里面提取到的

注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用

request.POST.getlist("xxxx")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值