내부 Django URL인지 여부를 확인하려면 django.core.urlresolvers.resolve
을 사용하십시오. 그렇지 않은 경우 django.core.urlresolvers.Resolver404
을 발생시킵니다. 그렇지 않으면 필요한 경우 인트로 스펙 트할 수있는 일치 개체가 반환됩니다. 필요한 경우 REFERER
환경 변수에이 환경 변수를 입력하고 resolve
이 Resolver404를 발생시키는 경우 URL을 기본 URL로 바꿀 수 있습니다.
편집 : 실제로는 아니요, resolve
은 URL의 경로 구성 요소에서만 작동합니다. 따라서 올바른 도메인인지 확인하기 위해 urlparse을 사용하여 REFERER
헤더를 해체해야합니다. 그렇다면 URL이 Django 사이트의 일부인지 아닌지 알아보기 위해 구문 분석 된 URL의 경로 구성 요소에 resolve
을 사용하십시오 .
# 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))
# ...