Pashupati Pariyar
Pashupati Pariyar

Reputation: 37

URL was not found in the server

I am trying to deploy my ml model in flask. The error appear when i am trying access my height-weight.html page from the home.html page.

code for app.py

from flask import Flask, request, jsonify, render_template
import pickle


app = Flask(__name__)


@app.route('/')
def home():
    return render_template('home.html')

if __name__ == "__main__":
    app.run()


This works perfectly fine. It render home.html. No problem here.

Output 1:-

image1

But as soon as I click Check Project button following error occurs.

Output 2:-

image2

Code for height-weight.py

from flask import Flask, request, jsonify, render_template
import pickle


app = Flask(__name__)

model = pickle.load(open('model.pkl', 'rb'))

@app.route('/predict')
def weight_predict():
    return render_template('height-weight.html')


@app.route('/predict',methods=['POST'])
def predict():
    if request.method == 'POST':
        height = float(request.form['height'])
        gender = float(request.form['gender'])

        prediction = model.predict([[gender, height]])

        output = round(prediction[0], 2)

    return render_template('height-weight.html', weights = output)

if __name__ == "__main__":
    app.run()

And finally my html code for height-weight.html look like this.

Code:-

<section id='form'>
                <div class="container">
                    <h1>Height Weight Prediction</h1>

                    <form action="{{ url_for('predict')}}" method="get">
                        <div class="card">
                            <div class="card-body">
                                <label>Gender</label>
                                <input type="text" class="form-control" id='gender' placeholder="Input Your Gender" required="required">
                            </div>
                            <div class="card-body">
                                <label>Height</label>
                                <input type="text" class="form-control" id='height' placeholder="Input Your Height" required="required">
                                <small class="form-text text-muted">Please input your height in 'Inch'.</small>
                            </div>
                            <button type="submit">Predict Weight</button>
                        </div>
                    </form>
                    {{ weights }}
                </div>
            </section>

My expected output is to show height-weight.html pages from where i can predict the weight. This is my error. Hope you guys understand my error and please help me. Thanks in advance.

Upvotes: 0

Views: 58

Answers (1)

HNMN3
HNMN3

Reputation: 542

You are redirecting the page to 127.0.0.1:5000/height-weight.html which is looking for the HTML file on the backend server. You need to redirect the page to /redirect by providing it in an anchor tag.

Flask renders the HTML page and returns the response it doesn't serve the HTML page directly. That's why you are getting 404 error.

Hope this helps!

Upvotes: 1

Related Questions