准备工作
创建环境
首先创建新项目:RESTApi,配置好settings.py,数据库驱动,创建RESTApi数据库。
创建类视图
创建类视图,并且写好对应的请求类型方法:views:
from django.shortcuts import render
from django.views import View
class HellowView(View):
def get(self, request):
return render(request, 'hello.html')
新建并注册App中的urls.py:
总urls.py:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^cbv/', include('App.urls', namespace='cbv')),
]
urls.py:
from django.conf.urls import url
from App import views
urlpatterns = [
url(r'^hello/', views.HelloView.as_view(), name='hello'),
]
类视图View子类:TemplateView
- 多继承的子类
继承自View
- 分发
- 函数:dispatch
继承自ContextMixin
- 接收上下文
- 从视图函数传递到模板的内容
- get_content_data
继承自TemplateResponseMixin
- 将内容渲染到模板中
- template_name
- template_engine
- response_class
- content_type:网络传输的数据类型MIME,制定用什么软件打开
- 函数:render_to_response
因为Django是重量级框架,创建类视图时可以观察到,继承了Django自带的View类,该类其实还有很多子类,点击进入:
可以看到有很多类视图,接下来我们可以看到有很多模板类视图:
比如TemplateView中就有刚刚我们所使用的get请求,并且可以看到这个类使用了多继承。
TemplateView继承了TemplateResponseMixin,该类用来为多继承做准备的。
TemplateResponseMixin:
class TemplateResponseMixin(object):
"""
A mixin that can be used to render a template.
"""
template_name = None
template_engine = None
response_class = TemplateResponse
content_type = None
可以看到第5行有template_name参数,这个参数可以用来在urls.py中的as_view()中设置路由跳转的页面。
如:
urls.py:
urlpatterns = [
url(r'^hello/', views.HelloView.as_view(), name='hello'),
url(r'^template/', views.HelloTemplateView.as_view(template_name='hello.html'), name='template'),
]
view.py:
class HelloTemplateView(TemplateView): # 继承TemplateView
pass
在urls中可以直接返回模板资源,达到了减少代码量的目的。
此处评论已关闭