本文整理汇总了Python中django.urls.is_valid_path方法的典型用法代码示例。如果您正苦于以下问题:Python urls.is_valid_path方法的具体用法?Python urls.is_valid_path怎么用?Python urls.is_valid_path使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类django.urls
的用法示例。
在下文中一共展示了urls.is_valid_path方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: process_response
# 需要导入模块: from django import urls [as 别名]
# 或者: from django.urls import is_valid_path [as 别名]
def process_response(self, request, response):
language = translation.get_language()
language_from_path = translation.get_language_from_path(request.path_info)
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
if (response.status_code == 404 and not language_from_path and
i18n_patterns_used and prefixed_default_language):
# Maybe the language code is missing in the URL? Try adding the
# language prefix and redirecting to that URL.
language_path = '/%s%s' % (language, request.path_info)
path_valid = is_valid_path(language_path, urlconf)
path_needs_slash = (
not path_valid and (
settings.APPEND_SLASH and not language_path.endswith('/') and
is_valid_path('%s/' % language_path, urlconf)
)
)
if path_valid or path_needs_slash:
script_prefix = get_script_prefix()
# Insert language after the script prefix and before the
# rest of the URL
language_url = request.get_full_path(force_append_slash=path_needs_slash).replace(
script_prefix,
'%s%s/' % (script_prefix, language),
1
)
return self.response_redirect_class(language_url)
if not (i18n_patterns_used and language_from_path):
patch_vary_headers(response, ('Accept-Language',))
if 'Content-Language' not in response:
response['Content-Language'] = language
return response
示例2: should_redirect_with_slash
# 需要导入模块: from django import urls [as 别名]
# 或者: from django.urls import is_valid_path [as 别名]
def should_redirect_with_slash(self, request):
"""
Return True if settings.APPEND_SLASH is True and appending a slash to
the request path turns an invalid path into a valid one.
"""
if settings.APPEND_SLASH and not request.path_info.endswith('/'):
urlconf = getattr(request, 'urlconf', None)
return (
not is_valid_path(request.path_info, urlconf) and
is_valid_path('%s/' % request.path_info, urlconf)
)
return False
示例3: process_response
# 需要导入模块: from django import urls [as 别名]
# 或者: from django.urls import is_valid_path [as 别名]
def process_response(self, request, response):
language = translation.get_language()
language_from_path = translation.get_language_from_path(request.path_info)
urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
i18n_patterns_used, prefixed_default_language = is_language_prefix_patterns_used(urlconf)
if (response.status_code == 404 and not language_from_path and
i18n_patterns_used and prefixed_default_language):
# Maybe the language code is missing in the URL? Try adding the
# language prefix and redirecting to that URL.
language_path = '/%s%s' % (language, request.path_info)
path_valid = is_valid_path(language_path, urlconf)
path_needs_slash = (
not path_valid and (
settings.APPEND_SLASH and not language_path.endswith('/') and
is_valid_path('%s/' % language_path, urlconf)
)
)
if path_valid or path_needs_slash:
script_prefix = get_script_prefix()
# Insert language after the script prefix and before the
# rest of the URL
language_url = request.get_full_path(force_append_slash=path_needs_slash).replace(
script_prefix,
'%s%s/' % (script_prefix, language),
1
)
return self.response_redirect_class(language_url)
if not (i18n_patterns_used and language_from_path):
patch_vary_headers(response, ('Accept-Language',))
response.setdefault('Content-Language', language)
return response
示例4: process_request
# 需要导入模块: from django import urls [as 别名]
# 或者: from django.urls import is_valid_path [as 别名]
def process_request(self, request):
# First try to serve the static files (on /static/ and on /)
# which is relatively fast as files are stored in a self.files dict
if self.autorefresh: # debug mode
static_file = self.find_file(request.path_info)
else: # from the collected static files
static_file = self.files.get(request.path_info)
if static_file is not None:
return self.serve(static_file, request)
else:
# if no file was found there are two options:
# 1) the file is in one of the Django urls
# (e.g. a template or the Djangoadmin)
# so we'll let Django handle this
# (just return and let the normal middleware take its course)
urlconf = getattr(request, 'urlconf', None)
if is_valid_path(request.path_info, urlconf):
return
if (settings.APPEND_SLASH and not request.path_info.endswith('/') and
is_valid_path('%s/' % request.path_info, urlconf)):
return
# 2) the url is handled by frontend routing
# redirect all unknown files to the SPA root
try:
return self.serve(self.spa_root, request)
except AttributeError: # no SPA page stored yet
self.spa_root = self.find_file('/')
if self.spa_root:
return self.serve(self.spa_root, request)
# TODO: else return a Django 404 (maybe?)