Django之视图
Django之视图
Django的View(视图)
一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。
一个简单的视图

- 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)

让我们来逐行解释下上面的代码:
首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
接着,我们定义了current_datetime函数。它就是视图函数。每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。
注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够比较准确地反映出它实现的功能。
这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。
Django使用请求和响应对象来通过系统传递状态。
当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。
每个视图负责返回一个HttpResponse对象。
CBV和FBV
我们之前写过的都是基于函数的view,就叫FBV。还可以把view写成基于类的。
就拿我们之前写过的添加班级为例:
FBV版:

- # 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
FBV本身就是一个函数,所以和给普通的函数加装饰器无差:

- 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")

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

- # CBV版添加班级
- from django.views import View
- from django.utils.decorators import method_decorator
- class AddClass(View):
- @method_decorator(wrapper)
- 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/")

Request对象和Response对象
request对象
当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
请求相关的常用值
- path_info 返回用户访问url,不包括域名
- method 请求中使用的HTTP方法的字符串表示,全大写表示。
- GET 包含所有HTTP GET参数的类字典对象
- POST 包含所有HTTP POST参数的类字典对象
- body 请求体,byte类型 request.POST的数据就是从body里面提取到的
属性
所有的属性应该被认为是只读的,除非另有说明。
- Django之视图
- Django的View(视图)
- 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
- 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
- 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。
- 一个简单的视图
- 下面是一个以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)
- 复制代码
- 让我们来逐行解释下上面的代码:
- 首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
- 接着,我们定义了current_datetime函数。它就是视图函数。每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。
- 注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够比较准确地反映出它实现的功能。
- 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。
- Django使用请求和响应对象来通过系统传递状态。
- 当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。
- 每个视图负责返回一个HttpResponse对象。
- CBV和FBV
- 我们之前写过的都是基于函数的view,就叫FBV。还可以把view写成基于类的。
- 就拿我们之前写过的添加班级为例:
- FBV版:
- 复制代码
- # 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
- FBV本身就是一个函数,所以和给普通的函数加装饰器无差:
- 复制代码
- 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")
- 复制代码
- 使用装饰器装饰CBV
- 类中的方法与独立函数不完全相同,因此不能直接将函数装饰器应用于类中的方法 ,我们需要先将其转换为方法装饰器。
- Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器。
- 复制代码
- # CBV版添加班级
- from django.views import View
- from django.utils.decorators import method_decorator
- class AddClass(View):
- @method_decorator(wrapper)
- 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的扩展阅读
- Request对象和Response对象
- request对象
- 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
- Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
- 官方文档
- 请求相关的常用值
- path_info 返回用户访问url,不包括域名
- method 请求中使用的HTTP方法的字符串表示,全大写表示。
- GET 包含所有HTTP GET参数的类字典对象
- POST 包含所有HTTP POST参数的类字典对象
- body 请求体,byte类型 request.POST的数据就是从body里面提取到的
- 属性
- 所有的属性应该被认为是只读的,除非另有说明。
request属性相关
- Django之视图
- Django的View(视图)
- 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
- 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
- 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。
- 一个简单的视图
- 下面是一个以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)
- 复制代码
- 让我们来逐行解释下上面的代码:
- 首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
- 接着,我们定义了current_datetime函数。它就是视图函数。每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。
- 注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够比较准确地反映出它实现的功能。
- 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。
- Django使用请求和响应对象来通过系统传递状态。
- 当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。
- 每个视图负责返回一个HttpResponse对象。
- CBV和FBV
- 我们之前写过的都是基于函数的view,就叫FBV。还可以把view写成基于类的。
- 就拿我们之前写过的添加班级为例:
- FBV版:
- 复制代码
- # 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
- FBV本身就是一个函数,所以和给普通的函数加装饰器无差:
- 复制代码
- 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")
- 复制代码
- 使用装饰器装饰CBV
- 类中的方法与独立函数不完全相同,因此不能直接将函数装饰器应用于类中的方法 ,我们需要先将其转换为方法装饰器。
- Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器。
- 复制代码
- # CBV版添加班级
- from django.views import View
- from django.utils.decorators import method_decorator
- class AddClass(View):
- @method_decorator(wrapper)
- 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的扩展阅读
- Request对象和Response对象
- request对象
- 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
- Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
- 官方文档
- 请求相关的常用值
- path_info 返回用户访问url,不包括域名
- method 请求中使用的HTTP方法的字符串表示,全大写表示。
- GET 包含所有HTTP GET参数的类字典对象
- POST 包含所有HTTP POST参数的类字典对象
- body 请求体,byte类型 request.POST的数据就是从body里面提取到的
- 属性
- 所有的属性应该被认为是只读的,除非另有说明。
上传文件示例
方法
- Django之视图
- Django的View(视图)
- 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。
- 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。
- 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定成俗将视图放置在项目(project)或应用程序(app)目录中的名为views.py的文件中。
- 一个简单的视图
- 下面是一个以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)
- 复制代码
- 让我们来逐行解释下上面的代码:
- 首先,我们从 django.http模块导入了HttpResponse类,以及Python的datetime库。
- 接着,我们定义了current_datetime函数。它就是视图函数。每个视图函数都使用HttpRequest对象作为第一个参数,并且通常称之为request。
- 注意,视图函数的名称并不重要;不需要用一个统一的命名方式来命名,以便让Django识别它。我们将其命名为current_datetime,是因为这个名称能够比较准确地反映出它实现的功能。
- 这个视图会返回一个HttpResponse对象,其中包含生成的响应。每个视图函数都负责返回一个HttpResponse对象。
- Django使用请求和响应对象来通过系统传递状态。
- 当浏览器向服务端请求一个页面时,Django创建一个HttpRequest对象,该对象包含关于请求的元数据。然后,Django加载相应的视图,将这个HttpRequest对象作为第一个参数传递给视图函数。
- 每个视图负责返回一个HttpResponse对象。
- CBV和FBV
- 我们之前写过的都是基于函数的view,就叫FBV。还可以把view写成基于类的。
- 就拿我们之前写过的添加班级为例:
- FBV版:
- 复制代码
- # 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
- FBV本身就是一个函数,所以和给普通的函数加装饰器无差:
- 复制代码
- 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")
- 复制代码
- 使用装饰器装饰CBV
- 类中的方法与独立函数不完全相同,因此不能直接将函数装饰器应用于类中的方法 ,我们需要先将其转换为方法装饰器。
- Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器。
- 复制代码
- # CBV版添加班级
- from django.views import View
- from django.utils.decorators import method_decorator
- class AddClass(View):
- @method_decorator(wrapper)
- 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的扩展阅读
- Request对象和Response对象
- request对象
- 当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。
- Django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。
- 官方文档
- 请求相关的常用值
- path_info 返回用户访问url,不包括域名
- method 请求中使用的HTTP方法的字符串表示,全大写表示。
- GET 包含所有HTTP GET参数的类字典对象
- POST 包含所有HTTP POST参数的类字典对象
- body 请求体,byte类型 request.POST的数据就是从body里面提取到的
- 属性
- 所有的属性应该被认为是只读的,除非另有说明。
注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:
- request.POST.getlist("hobby")
Response对象
与由Django自动创建的HttpRequest对象相比,HttpResponse对象是我们的职责范围了。我们写的每个视图都需要实例化,填充和返回一个HttpResponse。
HttpResponse类位于django.http模块中。
使用
传递字符串
- from django.http import HttpResponse
- response = HttpResponse("Here's the text of the Web page.")
- response = HttpResponse("Text only, please.", content_type="text/plain")
设置或删除响应头信息
- response = HttpResponse()
- response['Content-Type'] = 'text/html; charset=UTF-8'
- del response['Content-Type']
属性
HttpResponse.content:响应内容
HttpResponse.charset:响应内容的编码
HttpResponse.status_code:响应的状态码
JsonResponse对象
JsonResponse是HttpResponse的子类,专门用来生成JSON编码的响应。
- from django.http import JsonResponse
- response = JsonResponse({'foo': 'bar'})
- print(response.content)
- b'{"foo": "bar"}'
默认只能传递字典类型,如果要传递非字典类型需要设置一下safe关键字参数。
- response = JsonResponse([1, 2, 3], safe=False)
Django shortcut functions
render()
结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。
- 参数:
- request: 用于生成响应的请求对象。
- template_name:要使用的模板的完整名称,可选的参数
- context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。
- content_type:生成的文档要使用的MIME类型。默认为 DEFAULT_CONTENT_TYPE 设置的值。默认为'text/html'
- status:响应的状态码。默认为200。
- useing: 用于加载模板的模板引擎的名称。
- 一个简单的例子:
- from django.shortcuts import render
- def my_view(request):
- # 视图的代码写在这里
- return render(request, 'myapp/index.html', {'foo': 'bar'})
上面的代码等于:

- from django.http import HttpResponse
- from django.template import loader
- def my_view(request):
- # 视图代码写在这里
- t = loader.get_template('myapp/index.html')
- c = {'foo': 'bar'}
- return HttpResponse(t.render(c, request))

redirect()
参数可以是:
- 一个模型:将调用模型的get_absolute_url() 函数
- 一个视图,可以带有参数:将使用urlresolvers.reverse 来反向解析名称
- 一个绝对的或相对的URL,将原封不动的作为重定向的位置。
默认返回一个临时的重定向;传递permanent=True 可以返回一个永久的重定向。
示例:
你可以用多种方式使用redirect() 函数。
传递一个具体的ORM对象(了解即可)
将调用具体ORM对象的get_absolute_url() 方法来获取重定向的URL:
- from django.shortcuts import redirect
- def my_view(request):
- ...
- object = MyModel.objects.get(...)
- return redirect(object)
传递一个视图的名称
- def my_view(request):
- ...
- return redirect('some-view-name', foo='bar')
传递要重定向到的一个具体的网址
- def my_view(request):
- ...
- return redirect('/some/url/')
当然也可以是一个完整的网址
- def my_view(request):
- ...
- return redirect('http://example.com/')
默认情况下,redirect() 返回一个临时重定向。以上所有的形式都接收一个permanent 参数;如果设置为True,将返回一个永久的重定向:
- def my_view(request):
- ...
- object = MyModel.objects.get(...)
- return redirect(object, permanent=True)
扩展阅读:
临时重定向(响应状态码:302)和永久重定向(响应状态码:301)对普通用户来说是没什么区别的,它主要面向的是搜索引擎的机器人。
A页面临时重定向到B页面,那搜索引擎收录的就是A页面。
A页面永久重定向到B页面,那搜索引擎收录的就是B页面。
Django之视图的更多相关文章
- 【Django】 视图层说明
[Django视图层] 视图层的主要工作是衔接HTTP请求,Python程序和HTML模板,使他们能够有机互相合作从模型层lou到数据并且反馈.说到视图层的工作就有以下几个方面要说 ■ URL映射 对 ...
- Django基本视图
Django基本视图 下面这三个类也许不能提供项目所需的所有的功能,这些应用于基于类的视图或Mixins情形下. 大多数Django的内建视图继承于其他基于类的视图或者各种mixins中,因为继承链是 ...
- Django通用视图APIView和视图集ViewSet的介绍和使用
原 Django通用视图APIView和视图集ViewSet的介绍和使用 2018年10月21日 14:42:14 不睡觉假扮古尔丹 阅读数:630 1.APIView DRF框架的视图的基类是 ...
- Django之视图函数总结
Django之视图函数总结 HttpRequest与HttpResponse http请求中产生两个核心对象: HttpRequest对象:用户请求相关的所有信息(对象) HttpResponse对象 ...
- Django _VIEW视图_源码分析
Django _VIEW视图: 1. 点击as_view方法. 第二步: as_view () 为VIEW 类里定义的,到时候我们定义业务逻辑的类就继承这个VIEW类. view方法内返回的是disp ...
- Django的视图层简介
Django的视图层 视图函数 所谓视图函数,其实就是我们Django项目中各个应用中的views.py文件中定义的每个用来处理URL路由映射到这里的逻辑函数.一个视图函数简称视图,它是个简单的Pyt ...
- django views视图函数返回值 return redirect httpresponse总结
django views视图函数返回值 return redirect render httpresponse总结
- Django的视图流式响应机制
Django的视图流式响应机制 Django的响应类型:一次性响应和流式响应. 一次性响应,顾名思义,将响应内容一次性反馈给用户.HttpResponse类及子类和JsonResponse类属于一次性 ...
- Django的视图响应类型
Django的视图响应类型 一. 视图函数编写原则 视图函数接受HTTP请求并返回响应,可以放在任何地方,可以是任何功能:视图函数可以返回Web文本,页面.重定向.错误.图片等任何内容:视图函数通过H ...
随机推荐
- Fish 下报错 Unsupported use of '||'. In fish, please use 'COMMAND; or COMMAND'.
在用fish激活virualenv虚拟环境时,使用命令: source ./venv/bin/activate 报错 ./venv/bin/activate (line 23): Unsupporte ...
- transmission跳过文件校验功能实现
贴吧链接:https://tieba.baidu.com/p/4839039900 GitHub:https://github.com/superlukia/transmission-2.92_ski ...
- zabbix 4.2 支持 timescledb 了
zabbix 4.2 已经发布了, 添加了好多新功能 支持prometheus 数据收集 支持timescaledb 支持http header 处理 更加友好的邮件通知格式 添加远程监控组件 简化标 ...
- Spring BOOT的学习笔记
1,静态文件夹src/main/resources/static下的,图片必须放在images文件夹下才能访问,直接放在static下不能访问 2,配置热部署,否则修改下Html,图片都得重启 htt ...
- 利用类的反射导入excel示例
直接上代码 1.页面展示 <div class="panel-heading font-bold text-center"> <i class="fa ...
- netty原理解析
netty主要采用的是reactor模式(事件)驱动模型,以下主要对reactor进行总结: C/S架构可以抽象为如下模型: C就是Client(客户端),上面的B是Browser(浏览器) S就是S ...
- ELK + Filebeat 日志分析系统
ELK + Filebeat 日志分析系统 架构图 环境 OS:CentOS 7.4 Filebeat: 6.3.2 Logstash: 6.3.2 Elasticsearch 6.3.2 Kiban ...
- 2018-2019-2 20175227张雪莹《Java程序设计》 实验二《Java面向对象程序设计》
2018-2019-2 20175227张雪莹<Java程序设计> 实验二<Java面向对象程序设计> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学 ...
- UHF RFID,高频RFID开发参考资料
ISO18000-6C电子标签百科 http://baike.baidu.com/item/ISO18000-6C%E7%94%B5%E5%AD%90%E6%A0%87%E7%AD%BE/80500 ...
- 一、新建springBoot项目
三种方式新建SpringBoot项目: 官网, myeclipse, idea 1.官方网站新建(https://start.spring.io/) 1)打开官网,选择自己需要的springBo ...