url重写

django-rest-framework学习之Relationships & Hyperlinked APIs--2017年4月17日至18日

谁都会走 提交于 2020-01-12 17:25:12
Relationships & Hyperlinked APIs 参考链接: http://www.weiguda.com/blog/23/ http://www.django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis/ 目前我们API中的关系用primary keys展示,这部分我们会通过hyperlinking提高我们API的内聚性和扩展性 【1】给API的根节点传建一个端点 在views.py中添加: from rest_framework.decorators import api_view from rest_framework.response import Response #reverse函数返回完全合格的URLs from rest_framework.reverse import reverse @api_view(['GET']) def api_root(request,format=None): return Response({ 'users':reverse('user-list',request=request,format=format), 'myLesson':reverse('myLesson-list',request=request,format

Scrapy学习篇(九)之文件与图片下载

為{幸葍}努か 提交于 2020-01-05 03:39:29
Media Pipeline Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方法和结构(称之为media pipeline)。 我们可以使用FilesPipeline和Images Pipeline来保存文件和图片 ,他们有以下的一些特点: Files Pipeline 避免重新下载最近已经下载过的数据 指定存储路径 FilesPipeline的典型工作流程如下: 在一个爬虫里,你抓取一个项目,把其中图片的URL放入 file_urls 组内。 项目从爬虫内返回,进入项目管道。 当项目进入 FilesPipeline,file_urls 组内的URLs将被Scrapy的调度器和下载器(这意味着调度器和下载器的中间件可以复用)安排下载,当优先级更高,会在其他页面被抓取前处理。项目会在这个特定的管道阶段保持“locker”的状态,直到完成文件的下载(或者由于某些原因未完成下载)。 当文件下载完后,另一个字段(files)将被更新到结构中。这个组将包含一个字典列表,其中包括下载文件的信息,比如下载路径、源抓取地址(从 file_urls 组获得)和图片的校验码(checksum)。 files 列表中的文件顺序将和源 file_urls 组保持一致

Django

﹥>﹥吖頭↗ 提交于 2020-01-03 00:03:57
第十二章 Django框架 12.1 HTTP协议 12.1.1 HTTP简介 超文本传输协议 Hyper Text Transfer Protocol 是一种用于分布式、协作式和超媒体信息系统的应用层协议 HTTP是万维网的数据通信的基础 HTTP有很多应用,但最著名的是用于web浏览器和web服务器之间的双工通信 HTTP是一个客户端终端和服务器端请求和响应的标准 12.1.2 HTTP 请求/响应的步骤 客户端连接到Web服务器 一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接 发送HTTP请求 通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成 服务器接受请求并返回HTTP响应 Web服务器解析请求,定位请求资源,服务器将资源复本写到TCP套接字,由客户端读取,一个响应由状态行、响应头部、空行和响应数据4部分组成 释放连接TCP连接 若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求 客户端浏览器解析HTML内容 客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码,然后解析每一个响应头

会话、Cookie、Session、url重写

感情迁移 提交于 2020-01-02 16:15:55
会话 在介绍Cookie与Session之前,想说明一下什么是会话。 会话 :可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。 为什么需要会话技术呢?这还地得从Http说起,Http是无状态的,所谓无状态就好像没有记忆一样。要保存一些共享的数据信息,就需要会话技术。 会话跟踪技术 :在一个会话的多个请求中共享数据,这就是会话跟踪技术。 四大会话跟踪技术分别是:Cookie,Session,url重写,隐藏域。 Cookie :服务器在一个应答首部传递给浏览器的名称/值对。浏览器保存的时间由cookie的过期时间属性来指定。当浏览器向某个服务器发送一个请求时,它会检查其保存的cookie,并在请求首部中包含从同一台服务器上接收到的所有cookie。 首次都是通过URL传递的,即在URL后跟一个ID标识。然后会判断客户端是否接受cookie,接受的话,存放在cookie里。不接受的话,仍然利用URL传递,即id保存在每次的URL里。 Session :在浏览器和服务器之间不直接传送所有的状态信息,而只是传递表示符(session ID)。浏览器发送sessionID,服务器跟踪与该会话相关联的所有信息

Django基本配置与URLconf

我是研究僧i 提交于 2020-01-02 01:07:02
what's the Django   python的框架主要有:Django、Flask、Tornado   Django是一个开放源代码的Web应用框架,由Python写成。它的主要特点是大而全,我们需要用到的关于Web框架的内容他几乎都包括,我们只要稍作改动就可以完成一个比较复杂的项目。 Django最具代表性的就是它的MTV模型,分别代表: models: 处理与数据库相关的操作 template :模板语法--->将变量(数据库数据)如何巧妙嵌入html页面中 views: 逻辑处理,主要用于后端的程序的编写并将需要展现的数据发送到template 此外,Django还有一个 urls分发器 ,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template,即起到路径与视图函数的映射关系的作用。 Django的基本生命周期如下图所示 Django基本命令 一、安装Django pip3 install django    二、创建Django项目 django namage.py startproject 项目名 #这里项目名取mysite,创建完后会得到对应文件夹 #- mysite:项目名称 #- manage.py: 启动文件,控制项目命令 #- mysite : 全局文件 #- __init__.py #-

Nginx Rewrite

谁都会走 提交于 2019-12-31 23:07:50
Nginx Rewrite Nginx Rewrite 一、问题引出+理论讲解 1.1何为Nginx Rewrite? 1.1.1什么是URL? 1.1.2“跳转有什么用? 1.1.3Per是什么语言? 1.2如何实现Rewrite跳转? 1.2.1Rwrite实用场景 1.2 2命令语法 1.2 3location分类 1.2 4location优先级 1.2.5比较rewrite和location 1.2 6location优先级规则 二、 根据不同应用场景 下实现Nginx Rewrite的配置实例 2.1 rewrite规则配置应用场景:基于域名的跳转 2.2 rewrite规则配置应用场景二:基于ip地址 2.3 rewrite规则配置应用场景三:基于跳转到新域名后面有目录的情况 2.4 rewrite规则配置应用场景四:基于多参数匹配 2 5 rewrite规则配置应用场景五:基于文件后缀名访问 2 6 rewrite规则配置应用场景六:基于指定文件(具体页面)匹配 三、总结 一、问题引出+理论讲解 1.1何为Nginx Rewrite? ​ Nginx Rwrite ——Nginx服务的规则重写,主要的功能是实现浏览器访问HTTP URL的跳转,其中相关的正则表达式是基于Perl语言。一般来说,几乎所有的Web服务器都支持URL重写。 ​

[iOS] NSURLProtocol 拦截器

时光怂恿深爱的人放手 提交于 2019-12-30 19:04:34
为了这篇文章的内容,写了一个小项目,支持ObjectiveC,Swift语言。 支持Cocoapods集成,主要功能是,网络拦截和Mock数据。 有兴趣的同学可以看看。 项目地址: https://github.com/zColdWater/HTTPInterceptor 一,NSURLProtocol 的介绍 Apple 官方文档 https://developer.apple.com/documentation/foundation/urlprotocol NSURLProtocol 是一个抽象类,你不能直接创建这个实例,如果你想使用它的功能,你应该继承它创建属于自己的子类,然后重写 NSURLProtocol 的方法。 1.关于NSURLProtocol类定义 我们看下这个类的定义: open class URLProtocol : NSObject { public init(request: URLRequest, cachedResponse: CachedURLResponse?, client: URLProtocolClient?) // 操作被拦截协议的对象,用于给予被拦截者回调。 open var client: URLProtocolClient? { get } // 拦截到的request open var request: URLRequest {

秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)

喜你入骨 提交于 2019-12-30 12:55:07
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 本节,将从 秋色园 的整站入口:UrlRewrite.dll入手解析无后缀原理。 鉴于园子里有很多UrlRewrite的文章,因此就不略为简单的讲解了: 一:用ISAPI筛选器:即网上第三方发布的比较常见的,如:RewriteEval.dll 秋色园 早期的版本始于2007,使用的就是第三方的插件,随着创业公司的结束,沉默了2年。 回顾当年参与开发 博客 的一共有这么几种角色: 1:技术总监负责指导我写 CYQ.Data ,和指导另两名选手外挂js和中文转拼音,同时写了个页面基类 2:我负责博客用户后台,另一同事负责写博客前台 3:一女同事负责写js外挂 4:2个美工负责写了好几套模版 5:另一个同事折腾了个中文转拼音的。 6:一共花了3个月左右的时间,开发了出来。 以前7个人干的活,现在,我一个人干了,知道我有多不容易了吧。 2009年时,随着 CYQ.Data 的二次小改进,打算搭建个人 博客 ,顺便把它更换数据层,却发现,实在是改不动,一个业务类就上万行代码。 同事那“复制+粘贴”的强大,表现的是相当的淋漓尽致,因此只好放弃改动,只删除一些不要的功能,然后重新定位了下URL,简单改造成

PHP MVC单入口

空扰寡人 提交于 2019-12-30 10:03:12
ThinkPHP去除url中的index.php 看到ThinkPHP路径中没有index.php会很诧异,怎么实现的?其实很简单,使用了apache的url重写功能。 ThinPHP URL去index.php 例如你的原路径是http://localhost/app/index.php/module/action/var/value/ 那么现在的地址是 http://localhost/app/module/action/var/value/ 去除index.php 1. httpd.conf配置文件中加载了mod_rewrite.so模块 //在APACHE里面去配置 #LoadModule rewrite_modulemodules/mod_rewrite.so把前面的警号去掉 2. AllowOverride None 讲None改为All //在APACHE里面去配置 (注意其他地方的AllowOverride也统统设置为ALL) AllowOverride none 改 AllowOverrideALL Options None Order allow,deny Allow from all 3. 确保URL_MODEL设置为2,在项目的配置文件里写 return Array( 'URL_MODEL' =>'2', ); 4. htaccess文件必须放到跟目录下

Django-路由层(URLconf)

谁都会走 提交于 2019-12-29 22:16:28
Django-路由层(URLconf) 分组 分组的目的:让服务端获得url中的具体数据,通过分组,把需要的数据按函数传参的方式传递给服务器后台 1-无名分组 若要从URL 中捕获一个值,只需要在它周围放置一对圆括号 # app01/urls.py from django.urls import path, re_path from app01 import views app_name = "app01" urlpatterns = [ path("login/", views.login, name="Log"), re_path(r"articles/([0-9]{4})/([0-9]){2}/", views.articles), ] # app01/views.py def articles(request, year, month ): print(year, month) return HttpResponse(year+"-"+month) 2-有名分组 在更高级的用法中,可以使用命名的正则表达式组来捕获URL 中的值并以关键字 参数传递给视图。 在Python 正则表达式中,命名正则表达式组的语法是(?P<name>),其中name 是组的名称,下面是以上URLconf 使用命名组的重写。 # app01/urls.py from django.urls