gpt4 book ai didi

django - 有没有办法通过自定义 HTTP header 获取引用 URL?

转载 作者:行者123 更新时间:2023-12-04 12:50:18 24 4
gpt4 key购买 nike

我目前正在使用以下功能来获取引用 View :

def get_referer_view(request, default=None):   
referer = request.META.get('HTTP_REFERER')
if not referer:
return default

# remove the protocol and split the url at the slashes
referer = re.sub('^https?:\/\/', '', referer).split('/')
if referer[0] != request.META.get('SERVER_NAME'):
return default

# add the slash at the relative path's view and finished
referer = u'/' + u'/'.join(referer[1:])
return referer

如果我重定向 view由于程序逻辑,例如...
return HttpResponseRedirect('dashboard')

...有没有办法在不使用 HTTP_REFERER 的情况下获得引用 View ?这样我就可以在重定向的 view 中使用该变量?这并不总是在浏览器的标题中设置。

请注意,因为 View 是按程序重定向的,所以我不能使用 POST 来收集数据。

也许可以以某种方式设置和检索自定义 header ?

最佳答案

使用 Django 的中间件组件。

https://docs.djangoproject.com/en/3.0/topics/http/middleware/

像这样的东西应该工作:

class HTTPReferer:

def __init__(self, get_response):
self.get_response = get_response

def __call__old(self, request):
# old
referer = request.META.get('HTTP_REFERER', None)
request.referer = referer
# other business logic as you like it
response = self.get_response(request)
return response

def __call__(self, request):
# reflecting last edit
path = request.path
response = self.get_response(request)
response['previous_path'] = path
return response

因此,您可以将所需的任何信息与 Django 中的每个请求/响应周期联系起来(您还可以设置自定义 header 等...)

在上面的示例中 HTTP_REFERER将在请求对象中作为 referer 可用.

编辑:我想,你关心的是 HTTP_REFERER并不总是由客户端填充;所以你可以绑 HttpRequest.path对自定义 header 的每个请求。如果路径不够,您也可以保存请求参数。这就是我想的。然后你有一个由最后一个路径填充的自定义标题。此外,如果这还不够,你可以使用 Django 的 URL resolver .

关于django - 有没有办法通过自定义 HTTP header 获取引用 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com