#python #flask #deployment
Вопрос:
Я развернул свою модель. Но когда я нажимаю кнопку «Отправить», мне отображаются не прогнозы, а скорее сообщение об ошибке, что страница не существует. Пожалуйста, помогите мне. «Это тот самый app.py код
movies = pd.read_csv('movies.csv')
app = flask.Flask(__name__, template_folder='templates')
count = CountVectorizer()
count_matrix = count.fit_transform(movies['All_Words'])
cosine_sim = cosine_similarity(count_matrix, count_matrix)
indices = pd.Series(movies.index)
all_titles = [movies['Title'][i] for i in range(len(movies['Title']))]
def recommendations(Title, cosine_sim = cosine_sim):
recommended_movies = []
idx = indices[indices == Title].index[0]
score_series = pd.Series(cosine_sim[idx]).sort_values(ascending = False)
top_10_indexes = list(score_series.iloc[1:11].index)
# populating the list with the titles of the best 10 matching movies
for i in top_10_indexes:
recommended_movies.append(list(movies.index)[i])
return recommended_movies
def get_recommendations(Title):
cosine_sim = cosine_similarity(count_matrix, count_matrix)
idx = indices[Title]
sim_scores = list(enumerate(cosine_sim[idx]))
sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
sim_scores = sim_scores[1:11]
movie_indices = [i[0] for i in sim_scores]
tit = movies['Title'].iloc[movie_indices]
dat = movies['All_Words'].iloc[movie_indices]
return_df = pd.DataFrame(columns=['Title','All_Words'])
return_df['Title'] = tit
return_df['All_Words'] = dat
return return_df
@app.route('/', methods=['GET', 'POST'])
def main():
if flask.request.method == 'GET':
return(flask.render_template('mainpage.html'))
if flask.request.method == 'POST':
m_name = flask.request.form['movie_name']
m_name = m_name.title()
#if m_name in all_titles:
#return(flask.render_template('negative.html',name=m_name))
result_final = recommendations(m_name)
names = []
names.append(result_final)
return flask.render_template('positive.html',movie_names=names,search_name=m_name)
if __name__ == '__main__':
app.run()
Это тот самый mainpage.html
!-- Demo -->
<div class="movie">
<h2 style="color:black;">Movie Recommendation System</h2>
<form action="{{ url_for('main') }}" method="POST">
<input type="text" id="movie_name" name="movie_name" placeholder="Enter movie name" required />
<input type="submit" id="submission_button" value="Submit"/>
</form>
Это тот самый positive.html
<div class="movie">
<h2><b>RECOMMENDATIONS</b></h2>
<p>Showing results for: {{ search_name }}</p>
<table class="movie_table" align="center">
<tr>
<th>Movie Title</th>
</tr>
<tbody class="table_body">
<tr>
<td>{{ movie_names[0] }}</td>
</tr>
<tr>
<td>{{ movie_names[1] }}</td>
</tr>
<tr>
<td>{{ movie_names[2] }}</td>
</tr>
<tr>
<td>{{ movie_names[3] }}</td>
</tr>
<tr>
<td>{{ movie_names[4] }}</td>
</tr>
<tr>
<td>{{ movie_names[5] }}</td>
</tr>
<tr>
<td>{{ movie_names[6] }}</td>
</tr>
<tr>
<td>{{ movie_names[7] }}</td>
</tr>
<tr>
<td>{{ movie_names[8] }}</td>
</tr>
<tr>
<td>{{ movie_names[9] }}</td>
</tr>
</tbody>
</table>
Пожалуйста, помогите мне. Когда я нажимаю «Отправить», я хочу, чтобы мои предложения отображались в табличной форме.
Комментарии:
1. находятся ли файлы .html в той же папке, что и ваш app.py? происходит ли сбой как для GET, так и для POST (т. Е. для обоих файлов .html)?
2. нет, они находятся в папке «Шаблоны». это показывает, что mainpage.html но при нажатии кнопки отправить появляется страница с ошибкой
3. Я бы предложил удалить переменные из positive.html и запустите его снова без аргументов, чтобы вы могли отказаться от других проблем. Если это сработает, вполне вероятно, что проблема связана с параметрами
4. Нет, извини, это не сработало. Когда я нажимаю «Отправить», отображается пустая страница с сообщением об ошибке
5. если вы не удалили зависимости из html, я думаю, что это нормально, что он пустой. Но, по крайней мере, теперь мы уверены, что проблема кроется в параметрах. Далее следует убедиться, что
movie_names
длина равна 10 (и отличается отNone
), а имя поиска-это просто строка, отличная отNone