django绝对域名的切换

描述

为了SEO建设,试图将icgoo网站上的所有相对链接换成绝对链接

方案一

写道
每页都作这种处理会影响速度,现在采用的方式是用pyCall。
在base.html最前面加上 {% pycall mydj.tempfuns.get_siteurl() as SITEURL %}
以后需要完整url的地方前加上{{SITEURL}}就可以了,像这样<a href = "{{SITEURL}}/games">

 *有没有测试,用这种方法后,速度会慢多少? 

 *用 Django-toolbar 本地调试应该能看出页面加载时间。 这种 pyCall 是从数据库层读取配置呢,还是从 settings.py 中读取。如果是从数据库读取的确会慢一点点。

参考:http://markmail.org/message/2c5khn45bdhlzozv

写道
该方式采用的还是最直接的方法,不是页面整体相对地址转换,而是先在base.html中载入域名前缀变量SITEURL,
如需绝对地址,在每个url中手动添加变量{{SITEURL}}

方案二

写道
用 tag{% url %}来返回绝对或相对路径

参考资料:http://webcache.googleusercontent.com/search?q=cache:2RZZ85CGB9IJ:bitkickers.blogspot.com/2010/11/django-url-tag-it-can-do-both.html+django+Relative+Absolute&cd=6&hl=zh-CN&ct=clnk

操作:

在urls.py中加入:

from django.core.urlresolvers import set_script_prefix
set_script_prefix(settings.SITE_URL)

在settings.py中定义变量SITE_URL

SITE_URL = 'http://www.icgoo.net'

这样,在urls.py中有映射

写道
(r'^search/$', 'search.search_view', {}, 'satchmo_search'),

在模版中调用该url,使用tags,{%url satchmo_search%}, 此时模板中返回的就是绝对地址

总结:

写道
如果模本中url的调用,都是采用tags映射,而不是手动书写,该方案能很好的实现要求

补:

写道
发现语句set_script_prefix(settings.SITE_URL),不能直接加在urls.py中,而是要加在每次模板渲染都能运行的地方,
如每一个对应的视图函数中,或直接加在某个中间件中

猜你喜欢

转载自xiaolin0199.iteye.com/blog/2022534