广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
3.2.1 函数类型视图
函数类型的视图,是指以函数单元的形式来对客户端的请求进行处理。django函数视图的定义语法:
def view_name(request): return HttpResponse()
view_name表示定义的函数视图名称,request是django内置的HttpRequest对象,为必传参数。客户端的HTTP请求方法,查询参数等都可以在HttpRequest对象中进行获取。 http协议为请求响应式的协议,django视图在收到客户端的请求以后,必须返回HttpResponse对象或HttpResponse的子类对象。
在视图中使用HttpResponse需要从django.http中进行导出
3.2.2 HttpRequest对象
HttpRequest对象的常用属性:
属性名 | 描述 |
scheme | 字符串类型,表示请求的协议类型,通常为http或https |
path | 字符串类型,表示客户端的请求路径 |
method | 字符串类型,表示客户端的http请求方法,值为大写形式,例如GET或POST |
encoding | 字符串类型,表示客户端提交的数据的编码方式,默认为utf-8编码 |
GET | 类似字典类型的对象,通过该属性可以获取http get方法的查询参数 |
POST | 类似字典类型的对象,通过该属性可以获取http post方法提交的参数 |
COOKIES | 字典类型的对象,存储了cookie信息,键名与键值都为字符串类型 |
FILES | 类似于字典的对象,包含所有的上传文件信息。FILES 中的每个键为html input文件类型标签中的name,键值为对应的数据。 注意,FILES 只有在请求的方法为POST 且form表单enctype属性的值为“multipart/form-data”时才会包含数据。否则,FILES 将为一个类似于字典的空对象。 |
3.2.3 HttpResponse对象
HttpResponse类的构造函数:
HttpResponse.__init__(content=b'', content_type=None, status=200, reason=None, charset=None)
参数解释:
(1) content:响应给客户端的内容,默认为空的字节字符串,content参数支持的类型主要有:迭代器,字符串,字节类型字符串。迭代器迭代出的元素必须为字符串或字节类型的字符串
(2) content_type: 表示传递的MIME类型,参数值默认为None,当为None时实际响应的是text/html类型
(3) status: 响应的http状态码,默认为200
(4) reason: http状态码所对应的描述信息,默认为None
(5) charset: 服务端响应的数据的编码方式,值为None时,表示默认为utf-8编码。
HttpResponse对象的常用属性:
属性名 | 描述 |
content | 字符串类型,表示返回的内容 |
content-type | 字符串类型,表示MIME类型,默认为text/html |
status_code | 整型,表示响应的http状态码 |
reason_phrase | 字符串类型,表示http状态码所对应的描述信息 |
charset | 字符串类型,表示响应内容的字符编码,默认为utf-8 |
HttpResponse对象的常用方法:
方法名 | 描述 |
write(content) | 将响应的内容写入数据缓冲区中 |
writelines(lines) | lines是一个列表类型,表示将多行内容写入数据缓冲区中 |
flush() | 刷新数据缓冲区 |
set_cookie(key, value='', max_age=None,expires=None) | 设置cookie信息,key表示cookie的键名,value表示键值。max_age是一个整数,表示在指定秒数后过期。 expires是一个"Wdy, DD-Mon-YY HH:MM:SS GMT" 格式的字符串对象或者UTC格式的datetime对象,表示在这个指定的日期/时间过期。 max_age与expires二选一。如果不指定过期时间,cookie会在关闭浏览器后自动过期。
set_cookie方法同时提供了与跨域相关的参数,在后续教程中会继续进行讲解。
|
3.2.3 在浏览器中进行加减乘除运算
现在通过函数类型视图,来对客户端的查询请求进行加减乘除运算,并将运算结果返回给客户端(浏览器)。请读者按照以下步骤来进行操作:
(1) 打开blog目录下的views.py,新增arithmetic视图
更新后的代码为:
from django.shortcuts import render from django.views import View # 从django.http中导出HttpResponse类型 from django.http import HttpResponse # Create your views here. class Home(View): def get(self, request): return render(request, "home.html") # 新增的arithmetic视图 def arithmetic(request): """ 获取url中的查询参数action,action的取值为:+,-,*,/ 分别表示加法运算,减法运算,乘法运算,除法运算 """ action = request.GET.get('action', '+') """ 获取url中的查询参数a和b,a和b分别代表算数运算的左操作数和右操作数 获取到的参数为字符串类型,故要转换为数值类型来进行算数运算 """ a = int(request.GET.get('a', 0)) b = int(request.GET.get('b', 0)) commands = {"+": lambda x,y: x+y, "-": lambda x,y: x-y, "*": lambda x,y: x*y, "/": lambda x, y: x / y} if action == "/" and b == 0: result = 0 else: result = commands.get(action, lambda x,y: 0)(a, b) # 构造HttpResponse对象,将运算结果直接返回给客户端 return HttpResponse(str(result))
(2) 打开chips目录中的urls.py,定义url与arithmetic视图的路由
更新后的代码为:
from django.contrib import admin from django.urls import path # 导出blog下的views.py,这样才能访问到对应的视图 import blog.views as blog urlpatterns = [ path('admin/', admin.site.urls), path('', blog.Home.as_view()), # 新增后的url路由 path('arithmetic/', blog.arithmetic), ]
(3) 进入windows命令行,切换到D盘的django-project目录,启动blog应用
切换到django-project目录后,输入python manage.py runserver 8080, 启动blog应用:
D:\Django-project>python manage.py runserver 8080
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
July17, 2020 - 15:35:19
django version 2.2.6, using settings 'chipscoco.settings'
Starting development server at http://127.0.0.1:8080/
Quit the server with CTRL-BREAK.
(1) 打开浏览器进行算数运算测试
打开浏览器,在地址栏中输入http://127.0.0.1:8080/arithmetic/?a=1&b=3&action=-,测试减法运算:
在地址栏中输入http://127.0.0.1:8080/arithmetic/?a=1&b=3&action=*,测试乘法运算:
在地址栏中输入http://127.0.0.1:8080/arithmetic/?a=1&b=3&action=/,测试除法运算:
+符号在http url中属于特殊字符,需要使用其转义字符%2B,在地址栏中输入http://127.0.0.1:8080/arithmetic/?a=1&b=3&action=%2b,测试加法运算:
3.2.4 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4) Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料:
已有2位薯条发表了看法:
访客 评论于 2020-08-24 16:12:53 回复
action = request.GET.get('action', '+')
# 这个‘+’ 错了吧?为什么有+
薯条老师 评论于 2020-08-25 07:14:29 回复
同学,没错,你认真看一下