Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取Django中以#开头的url中的参数_Django_Python 3.x - Fatal编程技术网

如何读取Django中以#开头的url中的参数

如何读取Django中以#开头的url中的参数,django,python-3.x,Django,Python 3.x,我有一个网址如下 如何从上面得到param2和param3的值。 我可以使用request.GET.GET('param1')读取param1值 当我读到param2时,它是无的。这是不可能做到的,至少不容易做到,因为它至少违反了一个主要标准,在这个标准中,#被用于锚定,并且它之后的任何内容甚至都没有被发送到服务器 当代理(如web浏览器)从web服务器请求web资源时,代理将URI发送到服务器,但不发送片段 从 例如: λ python -m http.server & λ curl

我有一个网址如下

如何从上面得到param2和param3的值。 我可以使用request.GET.GET('param1')读取param1值
当我读到param2时,它是无的。

这是不可能做到的,至少不容易做到,因为它至少违反了一个主要标准,在这个标准中,
#
被用于锚定,并且它之后的任何内容甚至都没有被发送到服务器

当代理(如web浏览器)从web服务器请求web资源时,代理将URI发送到服务器,但不发送片段

例如:

λ python -m http.server &
λ curl "localhost:8000/?param1=param1#param2=param2&param3=param3"
127.0.0.1 - - [27/Jan/2020 15:00:32] "GET /?param1=param1 HTTP/1.1" 200 -
#                                                     ^ nothing after # is seen by the server                                             

您必须使用
来分隔URL参数。

为什么要这样做?这不符合我所知道的任何标准。为什么不使用
&
#
用于播音这是否回答了您的问题?是的,但它是一个回调url,第三方将通过传递一些数据重定向到此url。当时他们正在添加#并传递数据。有可能读取吗?@当然没有,没有。正如我前面解释的那样,
用于锚定。客户端不会将任何内容传递给服务器(请参阅我的答案以获取证据)。使用
这是正确的。浏览器不会将锚发送到服务器。但是我相信,
django
可以配置为接受url中的
#
s。@nima django如何接收客户机甚至不发送的数据?如果阅读OP中的注释,可以看到此端点将用作回调url。因此,客户端不是浏览器,@Suresh提到的第三方可能会发送这些信息。@nima Python的
请求
也不是浏览器,它也不会将
之后的任何内容传递给服务器。OP可以重新设计他们自己的客户端/协议,但我不认为这会比做地球上其他人都在做的事情更好/更容易,这就是使用
&
,这确实是不折不扣的,我绝对同意你的看法。但在某些情况下,您可能无能为力,第三方可能不遵守这些标准,并做出类似这样不寻常的事情。