我正在使用d3.js使用flask在地图上显示我们的数据。我正在尝试使用此@app.route('/', methods=['POST' ])
在此处获取world.json文件,但它给出的错误为127.0.0.1--[29 / Apr / 2019 14:33:40]“ POST / HTTP / 1.1” 200-和
127.0.0.1--[29 / Apr / 2019 14:33:41]“ GET /world.json HTTP / 1.1” 404-。我已经将world.json文件存储在临时文件夹中。
import io
import csv
import pandas as pd
import numpy as np
from flask_googlemaps import GoogleMaps
from flask_googlemaps import Map,icons
import folium
import numpy as np
from sklearn.metrics.pairwise import cosine_similarity
########################################################################################################3
#from __future__ import division
import string
import math
import pandas
def kuch(doc_headline):
import os
import pandas as pd
import numpy as np
from nltk.tokenize import word_tokenize
from gensim import corpora, models, similarities
# This one is good when files of news corpus dict matrix are already generated and we are using notebook
# Use this saved matrix starategy in tfidf search in web app
if (os.path.exists("adminWorkOutput/news.dict")):
dictionary = corpora.Dictionary.load('adminWorkOutput/news.dict')
corpus = corpora.MmCorpus('adminWorkOutput/news.mm')
print("Already generated files are Used")
else:
print("Fresh run to generate saved dict matrix data ")
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
# one
# for doc in corpus_tfidf:
# print(doc)
# two
for doc in corpus_tfidf:
doc = [(dictionary.get(idx), tfidf) for idx, tfidf in doc]
#print(doc)
# one way
index = similarities.MatrixSimilarity(corpus_tfidf)
# print(np.array(index))
print("\nxxxxxxxxxxxxxxxxxxxxxxxx Similarities \n")
# other way
sims = similarities.Similarity('adminWorkOutput/', corpus_tfidf,
num_features=len(dictionary))
#print(sims)
# print(type(sims))
# documents[819] means news_820
# because array start from 0 and news start from 1
qry = doc_headline # str(documents[819])
print(qry)
query_doc = [w.lower() for w in word_tokenize(qry)]
# print(query_doc)
query_doc_bow = dictionary.doc2bow(query_doc)
# print(query_doc_bow)
query_doc_tf_idf = tfidf[query_doc_bow]
# print(query_doc_tf_idf)
print("\nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n")
my_result = sims[query_doc_tf_idf]
#print(my_result)
# print(list(enumerate(my_result)))
arr = sorted(enumerate(my_result), key=lambda item: -item[1])
print('this is there\n', arr[1])
df = pd.read_csv('adminWorkOutput/preprocessed.csv')
#print(df.loc[arr[1][0], 'topic'])
records = []
i = 0
import random
while (arr[i][1] > 0.1):
topic1 = df.loc[arr[i][0], 'headline']
country1 = df.loc[arr[i][0], 'country']
similarity_score1 = arr[i][1]
polarity_score1 = random.uniform(-1, 1)
records.append((topic1, country1, similarity_score1, polarity_score1))
i += 1
df1 = pd.DataFrame(records, columns=['topic', 'country', 'similarity_score', 'polarity_score'])
df1.to_csv('adminWorkOutput/similar.csv')
import csv, json
csvFilePath = "adminWorkOutput/similar.csv"
jsonFilePath = "adminWorkOutput/file.json"
arr = []
# read the csv and add the arr to a arrayn
with open(csvFilePath) as csvFile:
csvReader = csv.DictReader(csvFile)
print(csvReader)
for csvRow in csvReader:
arr.append(csvRow)
# arr = {'Countries': arr} # Added line
#print(arr)
# write the data to a json file
with open(jsonFilePath, "w") as jsonFile:
jsonFile.write(json.dumps(arr, indent=4))
app = Flask(__name__, static_url_path = "/tmp", static_folder = "tmp")
@app.route('/')
def my_form():
return render_template('myform2.html')
@app.route('/', methods=['POST' ])
def my_form_post():
text = request.form['search']
#processed_text = text.upper()
print(text)
kuch(text)
print("sahi ha")
return render_template('GeoMap/index.html')
import os
if __name__ == "__main__":
app.run()
答案 0 :(得分:1)
您的代码中没有任何内容映射到路由GET /world.json
。
可以从static_folder
获得static_url_path
文件,请尝试GET /tmp/world.json
。
检出Flask tutorial,尤其是静态文件部分。
答案 1 :(得分:1)
您忘记提供模板GeoMap/index.html
的内容,其中包含对world.json
文件的访问。通常,您应该使用url_for
来访问文件。在您的情况下,您将Flask应用定义为
app = Flask(__name__, static_url_path="/tmp", static_folder="tmp")
您的模板中应包含以下内容:
{{ url_for('static', filename='world.json') }}
因此,这将导致对/tmp/world.json
URL的请求。现在,这取决于您的意思。我已将world.json文件存储在临时文件夹中。在Linux / UNIX系统上,临时文件夹通常为/tmp
,但是在您的应用程序定义中,您提供了tmp
,这意味着相对于项目目录的tmp
文件夹。也许您想设置static_folder="/tmp"
吗?