我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用flask.render_template_string()。
def test_template_escaping(self): app = flask.Flask(__name__) render = flask.render_template_string with app.test_request_context(): rv = flask.json.htmlsafe_dumps('</script>') self.assert_equal(rv, u'"\\u003c/script\\u003e"') self.assert_equal(type(rv), text_type) rv = render('{{ "</script>"|tojson }}') self.assert_equal(rv, '"\\u003c/script\\u003e"') rv = render('{{ "<\0/script>"|tojson }}') self.assert_equal(rv, '"\\u003c\\u0000/script\\u003e"') rv = render('{{ "<!--<script>"|tojson }}') self.assert_equal(rv, '"\\u003c!--\\u003cscript\\u003e"') rv = render('{{ "&"|tojson }}') self.assert_equal(rv, '"\\u0026"') rv = render('{{ "\'"|tojson }}') self.assert_equal(rv, '"\\u0027"') rv = render("<a ng-data='{{ data|tojson }}'></a>", data={'x': ["foo", "bar", "baz'"]}) self.assert_equal(rv, '<a ng-data=\'{"x": ["foo", "bar", "baz\\u0027"]}\'></a>')
def test_context_processors(self): app = flask.Flask(__name__) admin = flask.Module(__name__, 'admin', url_prefix='/admin') @app.context_processor def inject_all_regular(): return {'a': 1} @admin.context_processor def inject_admin(): return {'b': 2} @admin.app_context_processor def inject_all_module(): return {'c': 3} @app.route('/') def index(): return flask.render_template_string('{{ a }}{{ b }}{{ c }}') @admin.route('/') def admin_index(): return flask.render_template_string('{{ a }}{{ b }}{{ c }}') app.register_module(admin) c = app.test_client() self.assert_equal(c.get('/').data, b'13') self.assert_equal(c.get('/admin/').data, b'123')
def send_test_template(): ''' Sends a test template to the provided address ''' form = SendTestTemplateForm(request.form) if form.validate_on_submit(): report = EmailReport.make_sample() try: subject = render_template_string(form.subject.data, report=report) text = render_template_string(form.text.data, report=report) email_provider.send( to=form.recipient.data, sender=g.user.email(), subject=subject, body=text) return jsonify({'success': True, 'message': 'Sent test email.'}) except Exception as e: return json_error(400, str(e), {}) return json_error(400, list_errors(form), {})
def post(self, evenType, jsDef, dataTable, fileParserClass, fileName, fileCod, folder): """ Button Post request """ url = render_template_string('''{{ url_for(\'ares.ajaxCall\', report_name=\'_AresReports\', script=\'SrvSaveToFile\') }}''') preAjax = AresItem.Item("var %s = %s.html();" % (self.htmlId, self.jqId)) preAjax.add(0, "%s.html('<i class=\"fa fa-spinner fa-spin\"></i> Processing'); " % self.jqId) jsDef = ''' %s $.post("%s", {fileName: %s, parserModule: '%s', reportName: '%s', datatable: %s, static_code: '%s', folder: '%s'}, function(data) { var res = JSON.parse(data) ; var data = res.data ; var status = res.status ; %s %s.html(%s); } ); ''' % (preAjax, url, fileName, fileParserClass, self.aresObj.http['REPORT_NAME'], dataTable.val, fileCod, folder, jsDef, self.jqId, self.htmlId) self.js(evenType, jsDef, url=url)
def callBackCreateUrl(self, dstColIndex, scriptName, extraCols=None, fixedParams=None): """ :param dstColIndex: The index of the main column with the hyperlink :param scriptName: The script name to be called :param extraCols: The list with the extra columns Index to be added to the URL :return: """ url = render_template_string('''{{ url_for('ares.run_report', report_name='%s', script_name='%s') }}''' % (self.aresObj.reportName, scriptName)) xtraParams = '' if fixedParams is not None: xtraParams = "&%s" % "&".join(fixedParams) self.callBacks('createdRow', ''' var content = $('td', row).eq(%(colIndex)s).html() ; var extraCols = %(extraCols)s ; var header = %(header)s ; var colsVar = [] ; var contentUrl = content; if (extraCols != null) { for (var item in extraCols) { var colNum = extraCols[item]; colsVar.push(header[colNum].key + "=" + $('td', row).eq(colNum).html())} ; contentUrl = content + "&" + colsVar.join('&') ;} contentUrl = contentUrl + '%(xtraParams)s' ; $('td', row).eq(%(colIndex)s).html("<a href='%(url)s?%(col)s="+ contentUrl + "'>" + content + "</a>") ''' % {'colIndex': dstColIndex, 'extraCols': json.dumps(extraCols), 'header': json.dumps(self.header[-1]), 'xtraParams': xtraParams, 'url': url, 'col': self.recKey(self.header[-1][dstColIndex])})
def __str__(self): item = AresItem.Item(None, self.incIndent) container_id = 'map-container-%s' % id(self) cfg = json.dumps({ 'map': { 'name': self.mapname }, 'areas': self.areas, 'defaultarea': self.defaultarea }) script = ''' $('#%s').mapael(%s); ''' % (container_id, cfg) if self.mapname not in self.aresObj.maps_included: self.aresObj.maps_included.add(self.mapname) item.add(0, render_template_string('''<script type="application/javascript" src="{{ url_for('static', filename='maps/%s.min.js') }}"></script>''' % self.mapname)) item.add(0, '<div id="%s" style="width: 100%%">' % container_id) item.add(1, '<div class="map">Sorry, no map available</div>') item.add(0, '</div>') item.add(0, '<script>') item.add(1, script) item.add(0, '</script>') return str(item)
def test_template_context(test_app, test_pilot): """Test that the template context gets injected properly.""" test_pilot.init_app(test_app) @test_app.route('/', navbar_kwargs={'path': ('Home',)}) def index(): pass template_string = ''' {% for entry in navbar %} <a href="{{ entry.url() }}">{{ entry.name }}</a> {% endfor %} ''' with test_app.test_request_context('/'): rendered = render_template_string(template_string) expected = '<a href="/">Home</a>' assert rendered.strip() == expected
def update_query(): K = '%s_%s' %(g.user,g.secret_key) Key = '%s_update_php' %K Key_incr = '%s_incr' % Key Redis.expire(Key,30) if Redis.lrange(Key,0,-1): data = Redis.rpop(Key) if '_End_' in data: Redis.expire(Key,3) return render_template_string(data) else: Redis.incr(Key_incr, 1) if int(Redis.get(Key_incr)) > 10000: Redis.delete(Key_incr) return render_template_string("_End_") return render_template_string("")
def publish_query(): K = '%s_%s' %(g.user,g.secret_key) Key = '%s_publish_php' %K Key_incr = '%s_incr' % Key Redis.expire(Key,30) if Redis.lrange(Key,0,-1): data = Redis.rpop(Key) if '_End_' in data: Redis.expire(Key,3) return render_template_string(data) else: Redis.incr(Key_incr, 1) if int(Redis.get(Key_incr)) >10000: Redis.delete(Key_incr) return render_template_string("_End_") return render_template_string("")
def publish_java_query(): K = '%s_%s' %(g.user,g.secret_key) messageKey = '%s_publish_java' % K Key_incr = '%s_incr' % messageKey myRedis.expire(messageKey,30) if myRedis.lrange(messageKey,0,-1): data = myRedis.rpop(messageKey) if '_End_' in data: myRedis.expire(messageKey,3) return render_template_string(data) else: myRedis.incr(Key_incr, 1) if int(myRedis.get(Key_incr)) > 10000: myRedis.delete(Key_incr) return render_template_string("_End_") return render_template_string("")
def update_java_query(): K = '%s_%s' %(g.user,g.secret_key) messageKey = '%s_update_java' % K Key_incr = '%s_incr' % messageKey myRedis.expire(messageKey,30) if myRedis.lrange(messageKey,0,-1): data = myRedis.rpop(messageKey) if '_End_' in data: myRedis.expire(messageKey,3) return render_template_string(data) else: myRedis.incr(Key_incr, 1) if int(myRedis.get(Key_incr)) > 10000: myRedis.delete(Key_incr) return render_template_string("_End_") return render_template_string("")
def __call__(self, obj): """ Extract a value from `obj` and return the formatted value. """ # Extract value from the object. value = self.expr(**{x: getattr(obj, x) for x in dir(obj) if not x.startswith('_')}) if value is None: if self.raise_on_err: raise AttributeError(self.path) # Get a template, maybe template = (self.template if self.template else implicit_templates.get(type(value))) if template: return render_template_string(template, value=value) else: return value
def build_zone_base_template(zone): """ Load template files from the zone file directory and create the base NS and static records """ template_data = [] zone_dir = current_app.config['zone_dir'] base_template = read_if_exists(os.path.join(zone_dir, 'base_zone.j2')) if base_template: template_data.append(base_template) zone_template = read_if_exists(os.path.join(zone_dir, '{}.zone.j2'.format(zone))) if zone_template: template_data.append(zone_template) template = '\n'.join(template_data) # Use Markup to mark the string as safe, we're not generating HTML return render_template_string(Markup(template), origin=zone)
def create_client(use_cdn=None, js_iife=None): app = flask.Flask(__name__) app.config['TESTING'] = True if use_cdn is not None: app.config['SIMPLEMDE_USE_CDN'] = use_cdn if js_iife is not None: app.config['SIMPLEMDE_JS_IIFE'] = js_iife SimpleMDE(app) @app.route('/') def index(): return flask.render_template_string(TEMPLATE) return app.test_client()