Tôi đang sử dụng Flask làm khuôn khổ web và tôi đang cố triển khai ví dụ đầu tiên từ sách Bắt đầu với D3, bởi Mike Dewar. Tôi có một tập lệnh Python có tên là run.py
và hai thư mục, templates/
và static/
, có chứa tương ứng là index.html
và service_status.json. Thật không may, mã của tôi không hiển thị dữ liệu, cũng không phải là nó tạo ra bất kỳ lỗi nào rõ ràng.Khó truy cập tệp json với d3 và bình
Đây là những gì tôi có trong run.py
:
#!/usr/bin/env python
from flask import Flask, render_template, url_for
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
if __name__=="__main__":
port = 5000
app.debug = True
app.run(port=port)
Đây là những gì tôi có trong templates/index.html
:
<!DOCTYPE HTML>
<HTML>
<HEAD>
<META CHARSET="utf-8">
<SCRIPT SRC="http://d3js.org/d3.v3.min.js"></SCRIPT>
<SCRIPT>
function draw(data) {
"use strict";
d3.select("body")
.append("ul")
.selectAll("li")
.data(data)
.enter()
.append("li")
.text(function(d){
return d.name + ": " + d.status;
}
);
}
</SCRIPT>
<TITLE>MTA Data</TITLE>
</HEAD>
<BODY>
<H1>MTA Availability Data</H1>
<SCRIPT>
d3.json("{{ url_for('static', filename='service_status.json') }}",draw); // <---- BIG PROBLEM
</SCRIPT>
</BODY>
</HTML>
Tôi đang sử dụng Windows 7, Google Chrome, và Python 2.7.
Tôi đặt dòng * url_for (..) * sau khai báo * ứng dụng * và tôi nhận được lỗi sau: ** "Đã cố gắng tạo URL có ngữ cảnh ứng dụng đang được đẩy. Điều này phải được thực hiện". ** Tôi có cần phải làm gì đó với * app.test_request_context() * không? Hay tôi thiếu cái gì khác mà thực sự rõ ràng?(Tôi vừa nhặt bình và những thứ liên quan đến trang web nói chung vào tuần trước.) – cjohnson318
Xin lỗi, tôi cần phải cụ thể hơn. 'url_for (...' phải sau 'app.run()', bên trong 'if __name__ == '__main __'' có điều kiện –
Tôi đã di chuyển dòng 'url_for (..)' sau 'app.run()' Tôi vẫn nhận được lỗi bối cảnh ứng dụng, nhưng tôi không nhận được lỗi 404 nữa. – cjohnson318