目前,我正在og:url
内部呈现view.py
字符串,该字符串会在模板中呈现,如下所示:
# view.py
context = {
'og_url' : request.build_absolute_uri()
}
# template.html
<meta property="og:url" content="{{ og_url }}" />
然后,当我访问http://beta.example.com:8000/
时,我会查看来源...它正确显示:
<meta property="og:url" content="http://beta.example.com:8000/" />
然而,当我运行Facebook OG调试器时,我得到一个206重定向到http://beta.example.com
,它被列为规范网址...我唯一可以得到这个工作的方法是复制上面的输出并粘贴替换模板中的那个:
# template.html
<meta property="og:url" content="http://beta.example.com:8000/" />
在此之后,我尝试在视图中对字符串http://beta.example.com:8000
进行硬编码以在模板中呈现,这也有效:
# view.py
context = {
'og_url' : "http://beta.example.com:8000/"
}
# template.html
<meta property="og:url" content="{{ og_url }}" />
这将在Facebook OG中正确解析...所以我认为这是一个字符集问题?如果是这样,谁应该受到指责? Django还是Facebook?其次,我可以做些什么来正确地确保Django的输出将被Facebook解析?