跳转到主要内容

Django的绝对URI函数和模板标签

项目描述

django-absoluteuri

https://travis-ci.org/fusionbox/django-absoluteuri.png?branch=master

Django的绝对URI函数和模板标签。

为什么

有时候你需要输出一个绝对URL(例如,在电子邮件中),但你并不总是可以访问请求。这些实用工具如果可用,将使用 Sites 框架来创建绝对URI。

安装

安装django-absoluteuri

pip install django-absoluteuri

然后将其添加到你的INSTALLED_APPS

INSTALLED_APPS = (
    # ...
    'django.contrib.sites',
    'absoluteuri',
)

django-absoluteuri需要将Sites 框架配置好并添加到INSTALLED_APPS中。

设置

该库返回的uris协议默认为http。你可以使用ABSOLUTEURI_PROTOCOL设置来指定协议。

# settings.py
ABSOLUTEURI_PROTOCOL = 'https'

# Elsewhere
>>> absoluteuri.build_absolute_uri('/some/path/')
'https://example.com/some/path/'

模板标签

有两个模板标签,absoluteuriabsolutizeabsoluteuriurl标签类似,但它输出绝对URL。

{% load absoluteuri %}

<a href="{% absoluteuri 'my_view' kwarg1='foo' kwarg2='bar' %}">click here</a>

absolutize将接受一个相对URL并返回一个绝对URL。

{% load absoluteuri %}

<a href="{% absolutize url_from_context %}">click here</a>

过滤器

有时使用模板标签比使用过滤器更容易。你也可以这样做。

{% load absoluteuri %}

<a href="{{ my_object.get_absolute_url|absolutize }}">click here</a>

但是,有些情况下不能使用标签但可以使用过滤器。

{% load absoluteuri %}

{% include "some-other-template.html" with url=my_object.get_absolute_url|absolutize %}

功能

django-absoluteuri 还提供了两个功能,分别是 build_absolute_urireverse,它们是 request.build_absolute_urlurlresolvers.reverse 的等效函数。

>>> import absoluteuri

>>> my_relative_url = '/path/to/somewhere/'
>>> absoluteuri.build_absolute_uri(my_relative_url)
'http://example.com/path/to/somewhere/'
>>> absoluteuri.reverse('viewname', kwargs={'foo': 'bar'})
'http://example.com/path/to/bar/'

变更日志

1.3.0 (2018-09-04)

  • 支持 Django 2.1。移除对 Django < 1.11 的支持。

1.2.0 (2016-02-29)

  • 添加绝对化过滤器。这已弃用绝对化标签。[编号 4]

1.1.0 (2015-03-23)

  • 添加 ABSOLUTEURI_PROTOCOL 设置。[编号 1]

  • 记录了站点框架要求。

1.0.0 (2015-03-17)

  • 首次发布在 PyPI 上。

项目详情


下载文件

下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源代码分发

django-absoluteuri-1.3.0.tar.gz (7.9 kB 查看散列)

上传时间 源代码

由以下支持