Django 的视图层


下面是一个以HTML文档的形式返回当前日期和时间的视图

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

CBV与FBV

我们之前写过的都是基于函数的view,就叫FBV。还可以把view写成基于类的

# FBV版添加班级
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")

CBV:

# CBV版添加班级
from django.views import View


class AddClass(View):

    def get(self, request):
        return render(request, "add_class.html")

    def post(self, request):
        class_name = request.POST.get("class_name")
        models.Classes.objects.create(name=class_name)
        return redirect("/class_list/")

 

注意:

使用CBV时,urls.py中也做对应的修改:

# urls.py中
url(r'^add_class/$', views.AddClass.as_view()),

 无论是FBV还是CBV路由层都是路由对应视图函数内存地址

posted @ 2019-08-09 19:09  hui1019  阅读(85)  评论(0编辑  收藏  举报