使用
django.core.urlresolvers.resolve
django.core.urlresolvers.Resolver404
,否则它将返回一个匹配对象,您可以在必要时进行自省。你可以喂孩子
REFERER
根据需要将环境变量设置为该值,并在必要时使用默认URL替换URL
resolve
:实际上,没有,
显然只适用于URL的路径组件。所以你必须解构
推荐人
标题使用
urlparse
决定
在解析后的URL的路径组件上,确定该URL是否是Django站点的一部分。
# code not tested, YMMV, etc.
from urlparse import urlparse
from django.core import urlresolvers
HOME = 'http://my.site.com/'
def generate_back_url(url, default_url=HOME):
parsed = urlparse(url)
if parsed.netloc == 'my.site.com':
try:
urlresolvers.resolve(parsed.path)
except urlresolvers.Resolver404:
back_url = default_url
else:
back_url = url
else:
back_url = default_url
return back_url
# ...
def my_view(request):
# ...
# truth be told I'm not sure whether the .get() is necessary, sorry.
back_url = generate_back_url(request.META.get('REFERER', HOME))
# ...