在Django
模板中,我呈现了存储在数据库中的URL。该URL由用户定义。我不喜欢用户定义一个相对URL,例如/admin
并重定向到当前服务器域中不相关的某个位置。有什么方法可以防止将bookmark.url
渲染为相对URL?我希望仅将其呈现为绝对路径。
<div>
<a href="{{ bookmark.url }}">{{ bookmark.name }}</a>
</div>
注释1 :{% get_static_prefix %}
似乎与我的问题无关。请避免链接到这些问题。 (以防万一)
注释2 :我追求模板视图方面的任何解决方案或HTML解决方案。我知道在将模型对象作为context
发送之前总是可以对其进行修改。但是,我不追求这种解决方案。另外,我也不喜欢在视图中添加if-else,因为对于这样的微小改进来说,if-else太多了。
答案 0 :(得分:0)
以下自定义标记应起作用
from urllib.parse import urljoin
@register.simple_tag(takes_context=True)
def absolute_url(context, url):
return urljoin(context.request.build_absolute_uri(), url)
R DBI ODBC error: nanodbc/nanodbc.cpp:3110: 07009: [Microsoft][ODBC Driver 13 for SQL Server]Invalid Descriptor Index会将完全限定的URL和相对路径转换为完全限定的URL,并使用右手参数替换该路径
>>> urllib.parse.urljoin('http://somewebsite.com/foo/bar/', '/hello')
'http://somewebsite.com/hello'
但是,如果右手参数已经是完全限定的URL,它将返回该URL
>>> urllib.parse.urljoin('http://somewebsite.com/foo/bar/', 'http://someotherwebsite.com/')
'http://someotherwebsite.com/'
然后,在加载自定义标签后,您可以像这样使用它
<a href="{% absolute_url bookmark.url %}">