加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Django---分页器、中间件

发布时间:2020-12-15 17:19:38 所属栏目:大数据 来源:网络整理
导读:div id="cnblogs_post_body" 分页 Django的分页器(paginator) view django.shortcuts span style="color: #008000;"# span style="color: #008000;" Create your views here. span style="color: #0000ff;"from app01.models span style="color: #0000ff;"

<div id="cnblogs_post_body">

分页

Django的分页器(paginator)

view

 django.shortcuts <span style="color: #008000;">#<span style="color: #008000;"> Create your views here.
<span style="color: #0000ff;">from app01.models <span style="color: #0000ff;">import *
<span style="color: #0000ff;">from django.core.paginator <span style="color: #0000ff;">import<span style="color: #000000;"> Paginator,EmptyPage,PageNotAnInteger

<span style="color: #0000ff;">def<span style="color: #000000;"> index(request):

</span><span style="color: #800000;"&gt;'''</span><span style="color: #800000;"&gt;
批量导入数据:

Booklist=[]
for i in range(100):
    Booklist.append(Book(title="book"+str(i),price=30+i*i))
Book.objects.bulk_create(Booklist)
</span><span style="color: #800000;"&gt;'''</span>

<span style="color: #800000;"&gt;'''</span><span style="color: #800000;"&gt;

分页器的使用:

book_list=Book.objects.all()

paginator = Paginator(book_list,10)

print("count:",paginator.count)           #数据总数
print("num_pages",paginator.num_pages)    #总页数
print("page_range",paginator.page_range)  #页码的列表



page1=paginator.page(1) #第1页的page对象
for i in page1:         #遍历第1页的所有数据对象
    print(i)

print(page1.object_list) #第1页的所有数据


page2=paginator.page(2)

print(page2.has_next())            #是否有下一页
print(page2.next_page_number())    #下一页的页码
print(page2.has_previous())        #是否有上一页
print(page2.previous_page_number()) #上一页的页码



# 抛错
#page=paginator.page(12)   # error:EmptyPage

#page=paginator.page("z")   # error:PageNotAnInteger

</span><span style="color: #800000;"&gt;'''</span><span style="color: #000000;"&gt;


book_list</span>=<span style="color: #000000;"&gt;Book.objects.all()

paginator </span>= Paginator(book_list,10<span style="color: #000000;"&gt;)
page </span>= request.GET.get(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;page</span><span style="color: #800000;"&gt;'</span>,1<span style="color: #000000;"&gt;)
currentPage</span>=<span style="color: #000000;"&gt;int(page)


</span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt;:
    </span><span style="color: #0000ff;"&gt;print</span><span style="color: #000000;"&gt;(page)
    book_list </span>=<span style="color: #000000;"&gt; paginator.page(page)
</span><span style="color: #0000ff;"&gt;except</span><span style="color: #000000;"&gt; PageNotAnInteger:
    book_list </span>= paginator.page(1<span style="color: #000000;"&gt;)
</span><span style="color: #0000ff;"&gt;except</span><span style="color: #000000;"&gt; EmptyPage:
    book_list </span>=<span style="color: #000000;"&gt; paginator.page(paginator.num_pages)


</span><span style="color: #0000ff;"&gt;return</span> render(request,<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;index.html</span><span style="color: #800000;"&gt;"</span>,{<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;book_list</span><span style="color: #800000;"&gt;"</span>:book_list,<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;paginator</span><span style="color: #800000;"&gt;"</span>:paginator,<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;currentPage</span><span style="color: #800000;"&gt;"</span>:currentPage})</pre>

<div class="cnblogs_code_toolbar">

index.html:




    
    Title
        integrity


<span style="color: #0000ff;"><<span style="color: #800000;">div <span style="color: #ff0000;">class<span style="color: #0000ff;">="container"<span style="color: #0000ff;">>

<span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;h4</span><span style="color: #0000ff;"&gt;></span>分页器<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;h4</span><span style="color: #0000ff;"&gt;></span>
<span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;ul</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;

    {% for book in book_list %}
         </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span>{{ book.title }} -----{{ book.price }}<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;
    {% endfor %}

 </span><span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;ul</span><span style="color: #0000ff;"&gt;></span>


<span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;ul </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="pagination"</span><span style="color: #ff0000;"&gt; id</span><span style="color: #0000ff;"&gt;="pager"</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;

             {% if book_list.has_previous %}
                </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="previous"</span><span style="color: #0000ff;"&gt;><</span><span style="color: #800000;"&gt;a </span><span style="color: #ff0000;"&gt;href</span><span style="color: #0000ff;"&gt;="/index/?page={{ book_list.previous_page_number }}"</span><span style="color: #0000ff;"&gt;></span>上一页<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;a</span><span style="color: #0000ff;"&gt;></</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;
             {% else %}
                </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="previous disabled"</span><span style="color: #0000ff;"&gt;><</span><span style="color: #800000;"&gt;a </span><span style="color: #ff0000;"&gt;href</span><span style="color: #0000ff;"&gt;="#"</span><span style="color: #0000ff;"&gt;></span>上一页<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;a</span><span style="color: #0000ff;"&gt;></</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;
             {% endif %}


             {% for num in paginator.page_range %}

                 {% if num == currentPage %}
                   </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="item active"</span><span style="color: #0000ff;"&gt;><</span><span style="color: #800000;"&gt;a </span><span style="color: #ff0000;"&gt;href</span><span style="color: #0000ff;"&gt;="/index/?page={{ num }}"</span><span style="color: #0000ff;"&gt;></span>{{ num }}<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;a</span><span style="color: #0000ff;"&gt;></</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;
                 {% else %}
                   </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="item"</span><span style="color: #0000ff;"&gt;><</span><span style="color: #800000;"&gt;a </span><span style="color: #ff0000;"&gt;href</span><span style="color: #0000ff;"&gt;="/index/?page={{ num }}"</span><span style="color: #0000ff;"&gt;></span>{{ num }}<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;a</span><span style="color: #0000ff;"&gt;></</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;

                 {% endif %}
             {% endfor %}



             {% if book_list.has_next %}
                </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="next"</span><span style="color: #0000ff;"&gt;><</span><span style="color: #800000;"&gt;a </span><span style="color: #ff0000;"&gt;href</span><span style="color: #0000ff;"&gt;="/index/?page={{ book_list.next_page_number }}"</span><span style="color: #0000ff;"&gt;></span>下一页<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;a</span><span style="color: #0000ff;"&gt;></</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;
             {% else %}
                </span><span style="color: #0000ff;"&gt;<</span><span style="color: #800000;"&gt;li </span><span style="color: #ff0000;"&gt;class</span><span style="color: #0000ff;"&gt;="next disabled"</span><span style="color: #0000ff;"&gt;><</span><span style="color: #800000;"&gt;a </span><span style="color: #ff0000;"&gt;href</span><span style="color: #0000ff;"&gt;="#"</span><span style="color: #0000ff;"&gt;></span>下一页<span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;a</span><span style="color: #0000ff;"&gt;></</span><span style="color: #800000;"&gt;li</span><span style="color: #0000ff;"&gt;></span><span style="color: #000000;"&gt;
             {% endif %}

        </span><span style="color: #0000ff;"&gt;</</span><span style="color: #800000;"&gt;ul</span><span style="color: #0000ff;"&gt;></span>

<span style="color: #0000ff;"></<span style="color: #800000;">div<span style="color: #0000ff;">>

<span style="color: #0000ff;"></<span style="color: #800000;">body<span style="color: #0000ff;">>
<span style="color: #0000ff;"></<span style="color: #800000;">html<span style="color: #0000ff;">>


<div class="cnblogs_code_toolbar">

扩展

book_list</span>=<span style="color: #000000;"&gt;Book.objects.all()

paginator </span>= Paginator(book_list,15<span style="color: #000000;"&gt;)
page </span>= request.GET.get(<span style="color: #800000;"&gt;'</span><span style="color: #800000;"&gt;page</span><span style="color: #800000;"&gt;'</span>,1<span style="color: #000000;"&gt;)
currentPage</span>=<span style="color: #000000;"&gt;int(page)

</span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt;  如果页数十分多时,换另外一种显示方式</span>
<span style="color: #0000ff;"&gt;if</span> paginator.num_pages>30<span style="color: #000000;"&gt;:

    </span><span style="color: #0000ff;"&gt;if</span> currentPage-5<1<span style="color: #000000;"&gt;:
        pageRange</span>=range(1,11<span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;elif</span> currentPage+5><span style="color: #000000;"&gt;paginator.num_pages:
        pageRange</span>=range(currentPage-5,paginator.num_pages+1<span style="color: #000000;"&gt;)

    </span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;:
        pageRange</span>=range(currentPage-5,currentPage+5<span style="color: #000000;"&gt;)

</span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;:
    pageRange</span>=<span style="color: #000000;"&gt;paginator.page_range


</span><span style="color: #0000ff;"&gt;try</span><span style="color: #000000;"&gt;:
    </span><span style="color: #0000ff;"&gt;print</span><span style="color: #000000;"&gt;(page)
    book_list </span>=<span style="color: #000000;"&gt; paginator.page(page)
</span><span style="color: #0000ff;"&gt;except</span><span style="color: #000000;"&gt; PageNotAnInteger:
    book_list </span>= paginator.page(1<span style="color: #000000;"&gt;)
</span><span style="color: #0000ff;"&gt;except</span><span style="color: #000000;"&gt; EmptyPage:
    book_list </span>=<span style="color: #000000;"&gt; paginator.page(paginator.num_pages)


</span><span style="color: #0000ff;"&gt;return</span> render(request,locals())</pre>

<div class="cnblogs_code_toolbar">

中间件

中间件的概念

中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能。

Django的中间件的定义:

It’s a light,low

如果你想修改请求,例如被传送到view中的HttpRequest对象。 或者你想修改view返回的HttpResponse对象,这些都可以通过中间件来实现。

可能你还想在view执行之前做一些操作,这种情况就可以用 middleware来实现。

大家可能频繁在view使用request.user吧。 Django想在每个view执行之前把user设置为request的属性,于是就用了一个中间件来实现这个目标。所以Django提供了可以修改request 对象的中间件AuthenticationMiddleware

Django默认的Middleware

MIDDLEWARE =

每一个中间件都有具体的功能。

自定义中间件

中间件中一共有四个方法:

process_view

process_exception

process_response


<div class="cnblogs_code_toolbar">

process_request,process_response

当用户发起请求的时候会依次经过所有的的中间件,这个时候的请求时process_request,最后到达views的函数中,views函数处理后,在依次穿过中间件,这个时候是process_response,最后返回给请求者。

上述截图中的中间件都是django中的,我们也可以自己定义一个中间件,我们可以自己写一个类,但是

需要导入

注意:在使用之前需要在settings中配置一下,在MIDDLEWARE中加上我们自定义的中间件,注意顺序,从上往下加载读取,这个顺序会影响执行顺序

in views:

</span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #008080;"&gt;view函数...</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;) </span><span style="color: #0000ff;"&gt;return</span> HttpResponse(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;OK</span><span style="color: #800000;"&gt;"</span>)</pre>

in Mymiddlewares.py:

 django.utils.deprecation  django.shortcuts <span style="color: #0000ff;">class<span style="color: #000000;"> Md1(MiddlewareMixin):

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,request):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md1请求</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)


<span style="color: #0000ff;">def<span style="color: #000000;"> process_response(self,request,response):
<span style="color: #0000ff;">print(<span style="color: #800000;">"<span style="color: #800000;">Md1返回<span style="color: #800000;">"<span style="color: #000000;">)
<span style="color: #0000ff;">return<span style="color: #000000;"> response

<span style="color: #0000ff;">class<span style="color: #000000;"> Md2(MiddlewareMixin):

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,request):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2请求</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)<br />        <span style="color: #008000;"&gt;#<span style="color: #008000;"&gt;return HttpResponse("Md2中断")</span></span>
</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_response(self,response):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2返回</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;return</span> response</pre>

<div class="cnblogs_code_toolbar">

结果:

如果当请求到达请求2的时候直接不符合条件返回,即,程序将把请求直接发给中间件2返回,然后依次返回到请求者,结果如下:

返回的页面,后台打印如下:

流程图如下:

即:

当 def process_request


process_view

</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2"><code class="python plain">process_view(
<code class="python color1">self
<code class="python plain">,callback,callback_args,callback_kwargs)

</td>

</tr>

</table>

Mymiddlewares.py修改如下

 django.utils.deprecation  django.shortcuts <span style="color: #0000ff;">class<span style="color: #000000;"> Md1(MiddlewareMixin):

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,request):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md1请求</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt;return HttpResponse("Md1中断")</span>
<span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_response(self,response):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md1返回</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; response

</span><span style="color: #ff0000;"&gt;def process_view(self,callback_kwargs):
    print("Md1view")

<span style="color: #0000ff;">class<span style="color: #000000;"> Md2(MiddlewareMixin):

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,request):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2请求</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;return</span> HttpResponse(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2中断</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_response(self,response):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2返回</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; response

</span><span style="color: #ff0000;"&gt;def process_view(self,callback_kwargs):
    print("Md2view")</span></pre>

<div class="cnblogs_code_toolbar">

结果如下:

下图进行分析上面的过程:

当最后一个中间的process_request到达路由关系映射之后,返回到中间件1的process_view,然后依次往下,到达views函数,最后通过process_response依次返回到达用户。

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,callback_kwargs):

    # return HttpResponse("hello")

    response=callback(request,*callback_args,**callback_kwargs)
    return response</span></pre>

<div class="cnblogs_code_toolbar">

结果如下:

注意:,但是所有的process_response都还会执行。

process_exception

示例修改如下:

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,response):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md1返回</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; response

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_view(self,callback_kwargs):

    </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; return HttpResponse("hello")</span>

    <span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; response=callback(request,**callback_kwargs)</span>
    <span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; return response</span>
    <span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;md1 process_view...</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_exception(self):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;md1 process_exception...</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

<span style="color: #0000ff;">class<span style="color: #000000;"> Md2(MiddlewareMixin):

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_request(self,request):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2请求</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #008000;"&gt;#</span><span style="color: #008000;"&gt; return HttpResponse("Md2中断")</span>
<span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_response(self,response):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Md2返回</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;return</span><span style="color: #000000;"&gt; response
</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_view(self,callback_kwargs):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;md2 process_view...</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;)

</span><span style="color: #0000ff;"&gt;def</span><span style="color: #000000;"&gt; process_exception(self):
    </span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;md1 process_exception...</span><span style="color: #800000;"&gt;"</span>)</pre>

<div class="cnblogs_code_toolbar">

结果如下:

Md2返回
Md1返回

<div class="cnblogs_code_toolbar">

流程图如下:

当views出现错误时:

修改如下:

</span><span style="color: #0000ff;"&gt;print</span>(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;md2 process_exception...</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;) </span><span style="color: #0000ff;"&gt;return</span> HttpResponse(<span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;error</span><span style="color: #800000;"&gt;"</span>)</pre>

结果如下:

<p style="margin-left: 30px;">



<p style="margin-left: 30px;">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!