广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
3.3.1 类类型视图
定义类类型视图,需要从View类中进行继承,从django.views中可以导出View类。类视图的定义语法:
class ViewName(View): def get(self, request): return HttpResponse() def post(self, request): return HttpResponse()
ViewName表示定义的类视图名称,类视图中的request参数以及HttpResponse对象同函数视图,笔者不再赘述。类视图与函数视图的区别在于:
(1) 在函数视图中,需通过HttpRequest的method字段来区分http协议的GET和POST等方法,在类视图中,直接定义get方法来对http get请求进行处理,定义post方法来http post请求进行处理。
(2) 在urls.py中定义url与视图的路由,如果视图为类类型,则需要通过类视图的as_view方法来进行转换,以调用在类视图中定义的处理方法。
例如浏览器向服务器发起http get请求, django收到请求后执行视图类的as_view方法,该方法会返回在类视图中定义的get方法,然后对get请求进行处理。感兴趣的读者,可以查阅django的源代码。
类视图的代码实例:
class Greeting(View): greeting = "Hello Django" def get(self, request): return HttpResponse(self.greeting)
在上文的代码中定义了一个Greeting的类视图,类属性greeting的值为Hello Django,在get方法中将greeting的值响应给客户端。对于类属性值,可通过视图类as_view方法中的同名关键字参数,来进行覆盖。urls.py中的代码实例:
path('greeting/', blog.Greeting.as_view(greeting="Hello Python"))
3.3.2 响应HTML给浏览器
现在通过类类型视图,根据客户端的查询请求来响应不同的html文本,请读者按照以下步骤来进行操作:
(1) 打开chipscoco下的views.py,新增Html类视图
from django.shortcuts import render from django.views import View from django.http import HttpResponse # Create your views here. class Home(View): def get(self, request): greeting = request.GET.get('greeting', 'Django') return render(request, "blog/home.html", {"greeting": greeting}) def arithmetic(request): if request.method == "GET": action = request.GET.get('action', '+') a = int(request.GET.get('a', 0)) b = int(request.GET.get('b', 0)) if action == "+": result = a + b elif action == "-": result = a-b elif action == "*": result = a*b else: result = 0 if b == 0 else a / b return HttpResponse(str(result)) # 新增的视图类Html class Html(View): title = "根据客户端的查询请求来响应不同的html" """ 查询参数携带在url中,所以是对客户端的http get请求进行处理,对此不熟悉的读者,需要先学习下http协议 """ def get(self, request): """ 获取查询参数label,表示html标签,获取查询参数content,表示标签中的内容 """ label = request.GET.get('label', 'h1') content = request.GET.get('content', 'Hello Django') html = "<html><head><title>{0}</title></head><{1}>{2}</{1}></html>".format(self.title, label, content) # 响应html文本给浏览器 return HttpResponse(html)
(2) 打开chips目录中的urls.py,定义url与Html视图的路由
更新后的代码为:
from django.contrib import admin from django.urls import path import blog.views as blog urlpatterns = [ path('admin/', admin.site.urls), path('', blog.Home.as_view()), path('arithmetic/', blog.arithmetic), # 新增的代码,类视图需要执行类方法as_view来进行转换 path('html/', blog.Html.as_view()), ]
(3) 打开浏览器进行测试
使用浏览器进行测试时,需要先在命令行启动django服务器:python manage.py runserver 8080
打开浏览器,在地址栏中输入http://127.0.0.1:8080/html/?label=h2&content=Hello Python:
在Html视图中,直接在代码中编写html代码,并将其响应给浏览器。这样的写法有一个很大的缺点,很难编写复杂的页面样式, 此外将html页面与视图层的业务逻辑进行耦合,一旦需要更改页面的样式,就需要对视图进行修改。视图层只需负责核心的业务逻辑,然后在必要时调用模板层的html页面进行响应,将业务层(视图)与表现层(模板)进行分离,更容易对项目进行扩展和维护,这也是MTV架构的意义所在。
在团队开发中,视图层的代码逻辑由Python工程师进行负责,而将html页面的设计工作交给前端工程师。如果将页面的定义全部耦合在视图层,那么在团队协作中很难进行分工合作。在第四章的教程中会对django模板进行详细介绍。
3.3.3 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: