def process_response(self, request, response): content_type = response.get('Content-Type', '').split(';')[0].strip().lower() if (not settings.DEBUG or content_type not in ['text/html', 'application/xhtml+xml'] or not hasattr(response, 'content')): return response soup = BeautifulSoup( smart_str(response.content), 'html.parser', ) head = getattr(soup, 'head', None) if not head: return response script = soup.new_tag( 'script', src='http://%s:%d/livereload.js' % ( livereload_host(), livereload_port(), ) ) head.append(script) response.content = str(soup) return response
def process_response(self, request, response): content_type = response.get('Content-Type', '').split(';')[0].strip().lower() if (not settings.DEBUG or content_type not in ['text/html', 'application/xhtml+xml'] or not hasattr(response, 'content')): return response soup = BeautifulSoup( smart_str(response.content), 'html.parser', ) head = getattr(soup, 'head', None) if not head: return response script = soup.new_tag('script', src='http://%s:%d/livereload.js' % ( livereload_host(), livereload_port(), )) head.append(script) response.content = str(soup) return response
def livereload_script_tag(): if settings.DEBUG: return format_html( """<script src="{}:{}/livereload.js"></script>""", livereload_host(), livereload_port(), ) else: return ""
class Command(RunserverCommand): """ Command for running the development server with LiveReload. """ option_args = [('--nolivereload', {'action': 'store_false', 'dest': 'use_livereload', 'default': True, 'help': 'Tells Django to NOT use LiveReload.'}), ('--livereload-port', {'action': 'store', 'dest': 'livereload_port', 'type': int, 'default': livereload_port(), 'help': 'Port where LiveReload listens.'}), ('--livereload-host', {'action': 'store', 'dest': 'livereload_host', 'type': str, 'default': livereload_host(), 'help': 'Address to LiveReload server.'}) ] def add_arguments(self, parser): super(Command, self).add_arguments(parser) for name, kwargs in self.option_args: parser.add_argument(name, **kwargs) help = 'Starts a lightweight Web server for development with LiveReload.' def message(self, message, verbosity=1, style=None): if verbosity: if style: message = style(message) self.stdout.write(message) def livereload_request(self, **options): """ Performs the LiveReload request. """ style = color_style() verbosity = int(options['verbosity']) host = '%s:%d' % ( options['livereload_host'], options['livereload_port'], ) try: urlopen('http://%s/forcereload' % host) self.message('LiveReload request emitted.\n', verbosity, style.HTTP_INFO) except IOError: pass def get_handler(self, *args, **options): """ Entry point to plug the LiveReload feature. """ handler = super(Command, self).get_handler(*args, **options) if options['use_livereload']: threading.Timer(1, self.livereload_request, kwargs=options).start() return handler
def process_response(self, request, response): content_type = response.get('Content-Type', '').split(';')[0].strip().lower() if content_type not in ['text/html', 'application/xhtml+xml'] or settings.DEBUG == False: return response soup = BeautifulSoup( smart_str(response.content), 'html.parser', ) if not getattr(soup, 'head', None): return response script = soup.new_tag( 'script', src='http://localhost:%d/livereload.js' % livereload_port(), ) soup.head.append(script) response.content = str(soup) return response