精华内容
下载资源
问答
  • URL分发器(视图层)

    2019-02-17 14:27:23
    目录 视图 URL映射 path函数 URL中传入参数 普通传入参数 ...变量形式传入参数 ...​URL中包含另一个urls模块 ...这个对象存储了浏览器请求过来所有信息,包括携带参数以及一些头部信息等。在...

    目录

    视图

    URL映射

    path函数

    URL中传入参数

    普通传入参数

    变量形式传入参数

    ​URL中包含另一个urls模块

    URL命名、URL反转、应用命名空间


    视图

    视图一般都写在 app  的 views.py  中。并且视图的第一个参数永远都是 request  (一个HttpRequest)对象。这个对象存储了浏览器请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。比如这个请求是添加一篇博客,那么可以通过 request 来接收到这些数据,然后存储到数据库中,最后再把执行的结果返回给浏览器。视图函数的返回结果必须是 HttpResponseBase  对象或者其子类的对象。示例代码如下:

    from django.http import HttpResponse
    def first_page(request):
        return HttpResponse("Hello,word!Django")

    URL映射

    视图写完后,要与URL进行映射,也即用户在浏览器中输入什么 url  的时候可以请求到这个视图函数。在用户输入了某个 url  ,请求到我们的网站的时候, django  会从项目的 urls.py  文件中寻找对应的视图。在 urls.py  文件中有一个 urlpatterns  变量,以后 django  就会从这个变量中读取所有的匹配规则。匹配规则需要使用 django.urls.path  函数进行包裹,这个函数会根据传入的参数返回 URLPattern  或者是 URLResolver  的对象。示例代码如下:

    from django.contrib import admin
    from django.urls import path
    from first_app import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('',views.first_page)
    ]

    path函数

    path(route,view,kwargs,name)

    • route: 是一个匹配 URL 的准则(类似正则表达式)。当 Django 响应一个请求时,它会从 urlpatterns 的第一项开始,按顺序依次匹配列表中的项,直到找到匹配的项。这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 https://www.example.com/myapp/ 时,它会尝试匹配 myapp/ 。处理请求 https://www.example.com/myapp/?page=3 时,也只会尝试匹配 myapp/
    • view:当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 HttpRequest 对象作为第一个参数,被“捕获”的参数以关键字参数的形式传入。
    • kwargs:任意个关键字参数可以作为一个字典传递给目标视图函数
    • name:为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。

    URL中传入参数

    普通传入参数

    有时候, url  中包含了一些参数需要动态调整。比如简书某篇文章的详情页的url,是 https://www.jianshu.com/p/a5aab9c4978e  后面的 a5aab9c4978e  就是这篇文章的 id  ,那么简书的文章详情页面的url就可以写成 https://www.jianshu.com/p/<id>  ,其中id就是文章的id。那么如何在 django  中实现这种需求呢。这时候我们可以在 path  函数中,使用尖括号的形式来定义一个参数。比如我现在想要获取一本书籍的详细信息,那么应该在 url  中指定这个参数。示例代码
    如下:

    from django.contrib import admin
    from django.urls import path
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('book/<book_id>/',views.book_list)
    ]

    而我们的 views.py  中的代码如下:

    def book_list(request,book_id):
        text = "您输入的书籍的id是:%s" % book_id
        return HttpResponse(text)

    注:我们 urls.py中path函数的变量,也就是 <book_id>中的book_id 一定要和 views.py中函数接收的参数book_id是一致的  

    变量形式传入参数

    当然,也可以通过查询字符串的方式传递一个参数过去。这样就不用<>了,示例代码如下:

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('bookid/',views.book_detail)
    ]

    而在 views.py  中的函数也不用接收另外的参数了,代码如下:

    def book_detail(request):
        book_id = request.GET.get("id")
        text = "您输入的书籍id是:%s" % book_id
        return HttpResponse(text)

    以后在访问的时候就是通过 /bookid?id=123  即可将参数传递过去。


    URL中包含另一个urls模块

    在我们的项目中,不可能只有一个 app  ,如果把所有的 app  的 views  中的视图都放在 urls.py  中进行映射,肯定会让代码显得非常乱。因此 django  给我们提供了一个方法,可以在 app  内部包含自己的 url  匹配规则,而在项目的 urls.py  中再统一包含这个 app  的 urls  。

    比如,现在我们的项目有三个app

    • front:管理前端的应用
    • cmd:管理后端的应用
    • first_app:处理逻辑的应用

    我们可以在我们每个app内部,建立 urls.py文件。

    比如,在cms中,我们建立的urls.py如下

    from django.urls import path
    from . import views
    
    urlpatterns=[
        path("",views.index),
        path("login/",views.login)
    ]

    views.py文件如下 

    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("CMS首页")
    def login(request):
        return HttpResponse("CMS登录页面")

    然后我们在整个项目的 urls.py文件中可以如下:

    # first_project/urls.py文件:
    from django.contrib import admin
    from django.urls import path,include
    urlpatterns = [
        path('admin/', admin.site.urls),
        path("",include("front.urls")),
        path('cms/',include("cms.urls"))
    ]

    然后以后我们访问cms下的内容的话,在cms的urls.py中,默认是在cms/ 路径下的。 

    URL命名、URL反转、应用命名空间

    为什么需要给URL命令?

    因为 url 是经常变化的,如果在代码中写死的话,后续可能会经常改代码,给 url 取个名字,以后使用 url 的时候就使用它的名字进行反转就可以了。

    给url命名如下:

    urlpattern=[
        path("login/",views.login,name="login")   #将该url命名为login
    ]

    那么,我们怎么利用这个url的名字得到url的绝对路径呢?

    我们可以进行url反转,将url名字转换成url的绝对路径

     login_url = reverse('login')   #URL反转,将url名字反转成url的绝对路径

     为什么需要应用命名空间?

    比如,我们在 front 应用中 login/ 页面命名为login,在cms的 login/页面也命名为login,那么,在反转url的时候就会出错了。

    比如我们在cms项目中的urls.py中给应用命名如下

    from django.urls import path
    from . import views
    
    app_name="cms"       #给应用命名为cms
    urlpatterns=[
        path("",views.index),
        path("login/",views.login)
    ]

    那么,我们在反转的时候,只需要在名字前面指定我们的应用名字就行了

     login_url = reverse('cms:login')  #指定cms应用下的名字为login的url

    本文的代码:链接: https://pan.baidu.com/s/1t1naj5rK1JZg5d66PRvDEg 提取码: 1hd8 

    展开全文
  • URL编解码

    2015-12-20 13:22:21
    URI(统一资源定为标志),用于指定想要访问资源,URI可以有各种形式,如:日常在用的URL、每本书背面ISBN码都是URI一种形式, 日常过程中,如果不加区分,一般URI都指URL。拿我们熟悉的URL来说:一个...

        URI(统一资源定为标志),用于指定想要访问的资源,URI可以有各种形式,如:日常在用的URL、每本书背面的ISBN码都是URI的一种形式, 日常过程中,如果不加区分,一般说的URI都指的是URL。拿我们熟悉的URL来说:

    一个普通的URL:

    https://www.baidu.com/fuck.php?action=run#hash=1

    URL一般包括以下几个部分:

    • Scheme
      指定URL协议:http/https

    • hostname
      指定域名,如上面的www.baidu.com

    • port
      指定目标主机端口号,http协议默认为80端口,https默认为433端口。
    • path
      指定要访问的资源路径,以上为fuck.php
    • query
      ?开头,传递给目标主机的参数,key/value的形式来表示参数,参数之间通过&符号间隔开来。在Nodejs服务器,上面的URL最终解析得到query对象:

      req.query = {action: run}

    • hash
      hash参数用于给浏览器渲染出来的HTML界面指定锚点,服务器在解析URL的时候会把#后面的字符丢弃。

    如果在实际运用过程中我们仅仅只需要知道这些概念就好了,可惜事情的复杂度往往比现象的要大。
    • 如果要给URL放其他字符怎么处理,如果我想放一些二进制数据呢?
    • 数据量一大,URL会不会出现过长的问题?

    URL编解码

        在编写js代码过程中有几个常用的URL编码函数:encodeURI, encodeURIComponent, atob。以及对应的解码函数:decodeURI, decodeURIComponent, btoa。关于编解码,官方也有明确的规定(RFC 3986文档),以下字符为保留字符,如果开发者需要使用它,就需要对其编码:

    ; , / ? : @ & = + $

    同时也规定了一些非保留字符:

    字母/数字/- _ . ! ~ * ’ ( )

    对URL特殊字符的编码称之为百分号编码。即:

    对于特殊字符序,需要转换为UTF-8编码方式,然后取每个字节的16进制值,在其前面加上%号,完成编码。由于UTF-8编码兼容ASCII码,所以对于特殊字符只需要取其ASCII码的16进制值,在前面加上%即可。由于%号(ASCII HEX = 25)在URL编码有特殊的含义,所以也需要对它编码:%25。最终得到的url仅仅由定义URL schema需要的字符,加上非保留字符组成。

    来看看几个编解码函数的具体功能:
    + encodeURI/decodeURI
    用于对整个URL编解码,但是其不会对保留字符与上面定义的非保留字符进行编码。举个例子:
    普通的编码:

    
    > var url1 = 'http://www.baidu.com/fuck.php?action=run';
    undefined
    
    > encodeURI(url1)
    'http://www.baidu.com/fuck.php?action=run'
    > 
    

    加上几个保留字符试一试:

    
    > var url1 = 'http:/$/@;www.baidu.com/fuck.php?action=run';
    
    > encodeURI(url1)
    'http:/$/@;www.baidu.com/fuck.php?action=run'
    > 
    

    可以看到并没有对保留字符编码。

    再加入几个其他字符,如中文,试一试:

    > var url1 = 'http:/$/@;www.baidu.com/你好fuck.php?action=run';
    
    > encodeURI(url1)
    'http:/$/@;www.baidu.com/%E4%BD%A0%E5%A5%BDfuck.php?action=run'
    

    你好对应的Unicode码为:4F60597DUTF-8编码之后分别为:E4BDA0E5A5BD正好匹配encodeURI的输出。
    可以看到对encodeURI除保留字符与特殊字符外的字符进行了编码。

    由于encodeURI不会对一些特殊字符编码,但是URL规范使用中必须对一些特殊字符譬如说:&, =,+进行编码。所以我们要用到的另一个函数是encodeURIComponent

    encodeURIComponent会把除非保留字符外的字符,通过百分号编码,转化为非保留字符的形式,这其中就包括了特殊字符。
    看几个例子:

    > var component = 'http://www.baidu.com'; 
    
    > encodeURIComponent(component);
    'http%3A%2F%2Fwww.baidu.com'
    > 
    

    :, /都是保留字符,而.以及字母是非保留字符,验证了我们的想法。

    如果我们要在URL传入一些二进制数据怎么办呢?首先想到的是:Base64编码的出现主要就是为了解决二进制数据的传输问题btoa就是我们想要的接口。
    举个例子:

    var atob = require('atob');
    var btoa = require('btoa');
    
    var u1 = 'http://www.baidu.com';
    
    console.log(btoa(u1));
    

    输出:

    aHR0cDovL3d3dy5iYWlkdS5jb20=

    由于Base64在被编码字符长度不为3的倍数情况下会出现=号,=是保留字符,由于它在这里有特殊的含义(表示传输数据的一部分),所以需要调用encodeURIComponent对其进行编码。

    URL的一些数据长度限制规定

    web 浏览器对整个 URI 长度有一定的限制。传统的IE浏览器是2048个字节,而现代各种浏览器和 web 服务器的设定均不一样,这依赖于各个浏览器厂家的规定或者可以根据 web 服务器的处理能力来设定。

    展开全文
  • 统一资源定位符URL

    2019-10-11 17:22:36
    URL 统一资源定位符URL:是用来表示从互联网上得到的资源位置和访问这些资源的方法。 URL实际上就是在互联网上资源的地址。互联网上所以资源,都有一个唯一...URL 的一般形式由以下四部分组成: <协议> ...

    URL

     

    统一资源定位符URL:是用来表示从互联网上得到的资源位置和访问这些资源的方法。

    URL实际上就是在互联网上资源的地址。互联网上所以资源,都有一个唯一确定的URL。这里所说的“资源”是指互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互相网相连的任何形式的数据。

     

    1. URL 格式

    URL 的一般形式由以下四部分组成:

    <协议> : // <主机> : <端口> / <路径>

    第一部分:<协议> 就是指出使用什么协议来获取该万维网文档。通常有下列几种:

    file:本地计算机上文件

    ftp:FTP服务器上文件

    http:WWW 服务器上的超文本文件

    telnet:一个 Telnet站点

    gopher:Gopher 服务器上文件

    wais:一个 WAIS 服务器

    mailto:发送邮件给某人

    现在常用的就是 http(s)(超文本传送协议HTTP),其次是 ftp(文件传送协议FTP)。

     

    第二部分:<主机> 是指该主机在互联网上的 域名。 域名相关的已经说过,不清楚可以去看一下我的上一篇 https://blog.csdn.net/weixin_44609873/article/details/102495473

     

    三四部分:<端口> 和 <路径> 有时可以省略。

     

    现在有些浏览器为了方便用户,在输入 URL 时,可以把最前面的 “ http:// ” 甚至主机名最前面的 “ www ”省略,然后浏览器会替用户把省略的字符自动补齐。比如你在360浏览器输入 baidu.com 和 https://www.baidu.com 都能链接到百度。

     

    2. 使用 HTTP 的 URL

    HTTP 中 URL 一般形式:

    http : // <主机> : <端口> / <路径>

    HTTP 默认端口是80,通常可以省略。若再省略文件的 <路径> 项,则 URL 就指到互联网上的某个主页。

    咱就看 CSDN 这个例子:

    CSDN主页 URL :https://www.csdn.net               

    此处省略了默认的80端口。

    我的博客 URL :https://blog.csdn.net/weixin_44609873    

    80端口依然省略了,这里的 weixin_44609873 即为路径名。

     

    最后一点注意的是:URL 中的 <协议> 和 <主机> 部分,字母不区大小写,但 <路径> 有时要区分。

    例如你输入 Https://www.Csdn.net 和 https://www.csdn.net 链接会是一样的。

     

     

     

     

     

     

     

     

    展开全文
  • URL和URI区别

    2017-05-26 17:15:53
    URL(Uniform Resource Locator)即...其一般的形式,如:scheme:[//host][:port][path][?query][#fragment]scheme包括:http、https、file、jar等。一个例子:file:/User/root/test.jar?time=123431212, 其中:schema为f

    URL(Uniform Resource Locator)即统一资源定位器,指向互联网资源的指针,是一种具体的资源。其一般的形式,如:

    scheme:[//host][:port][path][?query][#fragment]

    scheme包括:http、https、file、jar等。一个例子:file:/User/root/test.jar?time=123431212, 其中:schema为file,path为/root/test.jar, query为time=123431212。

    这里需要区分URL和URI。URI, Uniform Resource Identifier,统一资源标识符,用来唯一的标识一个资源。其一般形式:

    [scheme:][//authority][path][?query][#fragment]

    其中,authority为[user-info@]host[:port]

    可见,URL是一种具体的URI,只不过其scheme是非空的,它不仅仅标识一个资源,也能定位一个资源(即通过url能够访问到这个资源),因此其必须是绝对地址,即使是相对url,其本质也是相对于某绝对url来讲的,也是一个绝对地址。而URI可以是绝对的也可以是相对的,只要能够标识即可。

    此外,URL和URI的不同之处还在于前者不提供对标准RFC2396规定的特殊字符的转义,因此需要调用者自己对URL各组成部分进行encode。而java.net.URI则会提供转义功能。这两者可以通过URI.toURL()和URL.toURI()来互相转换。

    展开全文
  • 这个对象存储了请求过来所有信息,包括携带参数以及一些头部信息等。在视图中,一般是完成逻辑相关操作。 views.py urls.py 二、URL映射和添加参数 可以在path函数中,使用尖括号的形式来定义一个参数,...
  • Request对象的一般用法

    千次阅读 2011-11-06 09:42:58
    Request是HttpRequest派生类,主要工作是从客户端获取信息,包括浏览器种类,用户输入表单... Get将表单中数据按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之
  • 1、html形式包括a标签,form表单,ajax等。此时访问链接必须写全路径,可以是相对路径,也可以是绝对路径  相对路径方式: namespace/actionname.action 此时默认地址是 http://localhost:8080/项目名/  ...
  • Base64是网络上最常见用于传输8Bit字节码...在其他应用程序中,也常常需要把二进制数据编码为适合放在URL包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。 一、编码 publi
  • 之前做项目,一般会有一张,用户操作记录数据表,里面主要包括一些,用户请求的URL和请求参数,用以记录用户做过哪些事情。并没有以文件的形式来做记录,当然只适合于一些用户量特别少系统。 而Mybatis打印SQL...
  • 之前做项目,一般会有一张,用户操作记录数据表,里面主要包括一些,用户请求的URL和请求参数,用以记录用户做过哪些事情。并没有以文件的形式来做记录,当然只适合于一些用户量特别少系统。而Mybatis打印SQL这...
  • 忙里偷闲,希望能帮到有需要人 基础知识: 1,VUE.js 在 脚本中加载本地图片路径时候需要用 require,但在html标签中设定则不需要; 2,VUE.js 原则上不支持...一般情况下,除了网络图片的URL,二进制形式...
  • 一般我们使用的形式url(r'^post/(?P<pk>[0-9]+)/$', views.PostetailView.as_view(), name='detail'), 最后可以看到View是所有通用视图父类,包括ListView, DetailView等 那as_view()到底实现了什么呢...
  • 除在保密期内保密论文和在技术保护期限内论文外,允许论文被查阅和借阅,可以公布(包括以电子信息形式刊登)论文全部内容或中、英文摘要等部分内容。论文公布(包括以电子信息形式刊登)授权东南大学研究生...
  • 而那些对更加多的一般的偏微分方程感兴趣的可以利用PDE工具箱。 更多的matlab的综合应用技术的信息请参阅Solution8314。 更多的有关matlab采用的各种求解器的算法的信息请查看下面的URLs: ● ODE 函数 ...
  •  forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。...
  • /*filters : [ //可以使用该参数来限制上传文件类型,大小等,该参数以对象的形式传入,它包括三个属性: {title : "doc, doc文档", extensions : "jpg,jpeg,png,gif,zip,rar,pdf,docx,doc,xlsx,xls,pptx,...
  • iOS探索:网络相关

    2018-12-28 09:48:32
    我们来看一下请求报文格式,首先是请求行,请求行包括方法、URL、协议文本,方法常见有GET/POST,URL就是我们请求地址,协议文本一般是HTTP1.1版本 然后再看一下请求头,头部字段都是以key:value的形式组合在...
  • “我记录”这套源码总共包括 两个部分:一个 .net 平台下全栈式、轻量级开发框架,包括 ORM、MVC、IOC、AOP、JSON、LOG 等,同时包括全套图文教程;用这个框架开发 SNS 互联网产品。本产品以 SNS 为基础平台,...
  • 昨天在用做网页时候发现,在网页上用一般形式添加css/js或者图片路径不管用(包括相对路径和绝对路径)。原因是在django里,一切资源都是通过URL访问,也就是说,必须在项目中的url.py中设置对应访问规则。 ...
  • 前言 参考王道书。 后续会进一步整理,包括添加笔记内容,标明参考资料。 更新中。。...目录一、万维网概述超文本传输协议HTTPHTTP协议特点HTTP连接方式非...URL一般形式: <协议>://<主机>:<端口
  • Delphi 实例程序

    2017-11-11 21:44:44
    简单编码工具,base64编码规范及相关实现原理; Base64编码是从二进制到字符过程,可...在其他应用程序中,也常常需要把二进制数据编码为适合放在URL包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性
  • maven repository mirror settings .xml 配置:

    千次阅读 2016-04-23 15:23:52
    remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问 ( 包括 中央仓库,私服,和其他公共库)local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名
  • 加密与解密入门

    千次阅读 2017-04-22 23:46:22
    Base64百度百科: Base64编码可用于在HTTP环境下传递较长标识信息。例如,在Java Persistence系统Hibernate...在其他应用程序中,也常常需要把二进制数据编码为适合放在URL包括隐藏表单域)中的形式。此时,采用Ba
  • # 双精度数指数形式 字符串 字符串可以由单引号或双引号引出字段定义。注意不同是被单引号引出字符串是以字面定义,而双引号引出字符串可以被扩展。反斜杠(\)可以被用来分割某些特殊字符。举例...
  • BASE64编码和解码 .

    千次阅读 2016-06-20 16:05:53
    BASE64 编码和解码: Base64编码可用于在HTTP环境下传递较长标识信息。例如,在Java Persistence系统Hibernate...在其他应用程序中,也常常需要把二进制数据编码为适合放在URL包括隐藏表单域)中的形式。此时,采
  • Base64编码可用于在HTTP环境下传递较长标识信息。例如,在Java Persistence系统...在其他应用程序中,也常常需要把二进制数据编码为适合放在URL包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,
  • Base64编码可用于在HTTP环境下传递较长标识信息。例如,在Java Persistence系统...在其他应用程序中,也常常需要把二进制数据编码为适合放在URL包括隐藏表单域)中的形式。此时,采用Base64编码不仅比较简短,

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 130
精华内容 52
关键字:

url的一般形式包括