from django.contrib.sites.shortcuts import get_current_site
from urllib.parse import urljoin
from django.http import HttpResponseRedirect
NEW_DOMAIN = 'www.newdomain.com'
放入每个view:
def myView(request, my_id):
if request.META['HTTP_HOST'] != NEW_DOMAIN:
# remove the args if not needed
destination = reverse('url_tag', args=[my_id])
full_address = urljoin(DOMAIN, str(destination))
return HttpResponseRedirect(full_address)
# your view here
8条答案
按热度按时间lf3rwulv1#
最好的方法仍然是使用你的Web服务器而不是Django,这样做会比使用Django更快更有效。
查看this question了解更多信息。
更新
如果你真的想在django中完成它,那么编辑你的url conf文件(它管理django's url dispatcher),在顶部包含以下内容-
有关详细信息,请查看文档。
6rvt4ljy2#
z2acfund3#
我也有同样的问题,所以我写了这个,它对我来说非常有效,也许别人也需要它:
并使用此函数重定向:
好好享受吧!
egdjgwm84#
对于Django〉=
2.0
,更简单的解决方案是使用RedirectView例如,在
urls.py
中:[Side注]
正如Aidan的回答中所提到的,最好重定向将由Web服务器网关上的不同服务处理的请求,而不是在(Python/Django)应用服务器上。
pxy2qtax5#
我最终使用Heroku和旋转了1个Web Dyno(这是免费的)。
就这么简单。可以找到相同的示例here。
3qpi33ja6#
catherine答案的另一种选择(更新到Python 3)是:
放入每个
view
:url_tag
是在urlpatterns
中定义的。camsedfj7#
最后我给出了一个简单的解决方案:
如果用户不禁用网页浏览器中的脚本,它就可以工作
snvhrwxg8#
你可以简单地在'urls.py'中找到的'urlpattens'值中添加重定向。希望它能有所帮助。参考是source。