向django添加三个模板标记:“fullurl”、“fullstatic”和“buildfullurl”。模板标记“fullurl”的作用与“url”类似,但它总是打印带有scheme和domain的绝对url
django-fullurl的Python项目详细描述
简介
django fullurl向django添加三个新的模板标记:fullurl、fullstatic和buildfullurl。
fullurl和fullstatic的行为分别类似于url和static,但它们总是返回带有方案和权限/域部分的绝对url。
例如,取这个url标记:
{%url"articles:article"slug="hello"%}
在我们的示例中,将打印:
/articles/hello
这是由某个绝对url调用的,因为它以正斜杠开头。但是,它不是一个absolute绝对url,因为它不包含scheme和authority部分。
如果我们用fullurl替换url,它将打印此结果:
http://example.com/articles/hello
在幕后,它使用request.build_absolute_uri来确定正确的方案和权限/域部分。
就像fullurl扩展url一样,fullstatic扩展static模板标记。
buildfullurl以相对url作为参数,并打印带有scheme和authority部分的绝对url。例如:
{%buildfullurlarticle.cover.url%}
安装
在命令行上运行:
$ pip install django-fullurl
确保这两个应用程序包含在您的INSTALLED_APPS设置中:
INSTALLED_APPS=['django.contrib.staticfiles','fullurl',# ...]
确保上下文处理器中包含django.template.context_processors.request。
示例用法
opengraph
opengraphurl必须是绝对的,包括scheme和authority部分。以下是如何使用fullurl和fullstatic来帮助您完成此操作:
{%loadfullurl%}<metaproperty="og:url"content="{%fullurl"articles:article"article=article%}"><metaproperty="og:image"content="{%fullstatic"cat.jpg"%}">
您可以使用buildfullurl标记将URL从相对转换为绝对
{%loadfullurl%}<metaproperty="og:url"content="{%buildfullurlarticle.get_absolute_url%}"><metaproperty="og:image"content="{%buildfullurlarticle.image.url%}">
另请参见
以下是一些备选方案,按字母顺序排列:
- django-absoluteuri(GitHub,Django Packages)提供两个模板标记:absoluteuri和absolutize。与此应用不同,它使用站点框架来确定要使用的域,这可能是一个附加的数据库查询。这在某些情况下非常有用,例如在创建电子邮件时。
- django-absoluteurl(GitHub,Django Packages)提供了一个模板标记absoluteurl,其工作方式与fullurl类似。不过,它似乎在python 2或较新的django版本中不起作用。
- django完整url(GitHub)允许您使用诸如{{ url_parts.domain }}之类的代码获取当前url的特定部分。它不提供与此应用程序相同的功能,命名相似性是无意的。
- django-urltags(Django Packages)提供了一些模板标记,包括absurl,但它自2012年以来就没有更新过,而且似乎在最近的django版本上也不起作用。
更改日志
1.0
- 第一次释放标记为稳定
- 支持Django 2.0和2.1
- 支持Python3.7
0.4
- 修复readme.rst中的rst语法错误
0.3
- 修复并改进文档
- 将changelog.rst添加到manifest.in
0.2
- 除了django 1.10之外,还添加了对django 1.8和django 1.9的支持。
- 除了Python3.6之外,还添加了对Python2.7、Python3.2、3.3、3.4和3.5的支持。
0.1
- pypi上的第一个版本。