def static(path):
return staticfiles_storage.url(path)
python类url()的实例源码
def url(self, context):
path = self.path.resolve(context)
return static(path)
def logo(request):
s = AdvancedSettings.objects.get()
if not s.logo:
return redirect(staticfiles_storage.url('images/fallback_logo.png'))
return HttpResponse(s.logo, content_type=s.logo_mimetype)
def login(request, *args, **kwargs):
if request.is_ajax():
return HttpResponse('<script type="text/javascript">window.location.href="%s";</script>' % reverse('ecs.users.views.login'))
ua_str = request.META.get('HTTP_USER_AGENT')
if ua_str:
request.ua = UA(ua_str)
if request.ua.is_unsupported:
return redirect(staticfiles_storage.url('help/html5.html'))
kwargs.setdefault('template_name', 'users/login.html')
kwargs['authentication_form'] = EmailLoginForm
response = auth_views.login(request, *args, **kwargs)
if request.user.is_authenticated():
LoginHistory.objects.create(type='login', user=request.user,
ip=request.META['REMOTE_ADDR'])
profile = request.user.profile
old_session_key = profile.session_key
profile.session_key = request.session.session_key
profile.save()
if not settings.DEBUG:
Session.objects.filter(session_key=old_session_key).update(
expire_date=timezone.now())
return response
def environment(**options):
"""
Hack to inject into Jinja templates so that they are actually usable
Using Jinja, though, gives us great power and great performance!
"""
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url_for': reverse,
})
from django.utils.text import slugify
env.filters['slugify'] = slugify
env.filters['belongs_to'] = user_belongs_to_group
return env
def validate_url(data, query):
"""
Checks if the given url contains the specified query. Used for custom url validation in the ModelForms
:param data: full url
:param query: string to search within the url
:return:
"""
if data and query not in data:
raise forms.ValidationError('Please enter a valid {} url'.format(query))
def static(path):
return staticfiles_storage.url(path)
def url(self, context):
path = self.path.resolve(context)
return static(path)
def static(path):
return staticfiles_storage.url(path)
def url(self, context):
path = self.path.resolve(context)
return static(path)
def static(path):
return staticfiles_storage.url(path)
def url(self, context):
path = self.path.resolve(context)
return static(path)
def static(path):
return staticfiles_storage.url(path)
def url(self, context):
path = self.path.resolve(context)
return static(path)
def url(self, context):
path = self.path.resolve(context)
return self.handle_simple(path)
def render(self, context):
url = self.url(context)
if self.varname is None:
return url
context[self.varname] = url
return ''
def handle_simple(cls, path):
if apps.is_installed('django.contrib.staticfiles'):
from django.contrib.staticfiles.storage import staticfiles_storage
return staticfiles_storage.url(path)
else:
return urljoin(PrefixNode.handle_simple("STATIC_URL"), path)
def find_file(self, url):
if self.use_finders and url.startswith(self.static_prefix):
path = finders.find(url[len(self.static_prefix):])
if path:
try:
return self.get_static_file(path, url)
except IsDirectoryError:
return None
return super(DjangoWhiteNoise, self).find_file(url)
def get_static_url(self, name):
try:
return decode_if_byte_string(staticfiles_storage.url(name))
except ValueError:
return None
def javascript(filename, type='text/javascript'):
"""A simple shortcut to render a ``script`` tag to a static javascript file"""
if '?' in filename and len(filename.split('?')) is 2:
filename, params = filename.split('?')
return mark_safe('<script type="{}" src="{}?{}"></script>'
.format(type, staticfiles_storage.url(filename), params))
else:
return mark_safe('<script type="{}" src="{}"></script>'
.format(type, staticfiles_storage.url(filename)))