在django中获取完整url是否有比执行以下操作更好的方法:

url = request.META['HTTP_HOST']
    + request.META['PATH_INFO']
    + request.META['QUERY_STRING']

request.META['URL']左右的吗?

推荐答案

您可以使用request.build_absolute_uri方式获取完整URL:

FULL_URL_WITH_QUERY_STRING: request.build_absolute_uri()
FULL_URL: request.build_absolute_uri('?')
ABSOLUTE_ROOT: request.build_absolute_uri('/')[:-1].strip("/")
ABSOLUTE_ROOT_URL: request.build_absolute_uri('/').strip("/")

如果这对你有帮助的话.

在Django中使用绝对URL的最好方法是,你可以创建一个上下文,然后找到你的ABSOLUTE_URL并返回它,这样你就可以在Django中的任何地方使用它.

如下例所示:

def absolute(request):
    urls = {
        'ABSOLUTE_ROOT': request.build_absolute_uri('/')[:-1].strip("/"),
        'ABSOLUTE_ROOT_URL': request.build_absolute_uri('/').strip("/"),
    }

    return urls

然后你应该在你的Django模板中的任何地方使用{{ABSOLUTE_ROOT}}.

Django相关问答推荐

django re_path() 函数模式与包含该模式的 url 不匹配

无法迁移,模型中的外键导致了问题

将两个视图重定向到具有不同 url id Django 的一个模板的正确方法

Django Inline Tabular admin:删除一个不工作的对象

基于模型多选字段在模板django中显示结果

如何将 select_related 应用于 Django 中的 m2m 关系的对象?

带有代码完成功能的 python / django 的 Sublime Text 2 和 3 设置

如何让两个模型相互引用 Django

如何动态检索 Django 模型类?

django 模板 if 或语句

Python Django:您正在使用 staticfiles 应用程序而没有设置 STATIC_ROOT 设置

Django 什么是反向关系?

如何在不同的元素上添加注释?

Django 模型:delete() 未触发

过滤 Django 数据库中包含数组中任何值的字段

如何在该元素中的所有应用程序之间共享元素范围的模板标签

Django:根据自定义函数过滤查询

XlsxWriter 对象另存为 http 响应以在 Django 中创建下载

在 Django 中查询 top x 元素

django/文件上传权限