【发布时间】:2020-08-06 20:18:37
【问题描述】:
视图页面有一个触发点击抓取的按钮,并且按钮逻辑是在 javascript 中。现在我已将按钮单击绑定到烧瓶功能。 URL 包含烧瓶变量(例如,scrape.route('/'))。现在我想提取这个域值并将其传递给烧瓶函数。
#blueprint
def create_blueprint():
scrape = Blueprint('scrape', __name__, url_prefix='/jarvis')
@scrape.route('<domain>/start_scrape')
def start_scrape(domain):
resp = get_links(domain)
return resp
#button logic
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
$(function() {
$('a#start_button').bind('click', function() {
if(!startScrape()) {
return false;
}
document.getElementById('start_button').style.display = "none";
var url = window.location.href;
var url_splits = url.split('/');
var domain_v = String(url_splits[url_splits.length - 1]);
document.write(domain_v)
$.getJSON({{ url_for('scrape.start_scrape', domain=domain_v)|tojson}}, {
name : $('input[name="scrape_name_input"]').val(),
queries : $('textarea[name="query_input"]').val()
}, function(data) {
endScrape();
console.log(data);
alert(data["message"]);
window.location.reload();
scrape_name_input.value = "";
});
return false;
});
});
我通过拆分 url 并提取最后一部分来绑定到域,但是当我尝试使用 url_for 构建 url 时,它的行为很奇怪。 Url for 在构建 URL 时需要域变量,如果我硬编码一个值,它就可以工作,例如'bing' 但如果我使用上面代码中提到的变量,它会失败并且端点 url 变为:
GET /jarvis//start_scrape
我不知道为什么会这样。我需要动态获取域,因此我无法对其进行硬编码。我提到以下但没有帮助: Flaskr url_for with parameters not working when called from javascript to python, Pass argument to flask from javascript, Pass JavaScript variable to Flask url_for
任何想法都将受到高度赞赏。
【问题讨论】:
标签: javascript python jquery ajax flask