Search code examples
pythonflaskherokusqlalchemy

Heroku defaults to 127.0.0.01 on page change


I'm having some trouble deploying my Flask App to Heroku. After a few tutorials I managed to get my Flask App hosted on Heroku, but I can't access any other pages. It reaches the homepage on https://todoapplication-464425.herokuapp.com/, but when I try and change to the Login/Register/Logout then it just defaults back to 127.0.0.1:5000. Does anyone know a workaround for this?

Procfile

web: gunicorn App:app

Requirements.txt

Flask==1.0.2
Flask-SQLAlchemy==2.5.
gunicorn==20.1.0
Jinja2==2.11.3
MarkupSafe==1.1.1
SQLAlchemy==1.4.15
virtualenv==20.4.6
Werkzeug==1.0.1

Folder setup

templates:

base.html
index.html
login.html
register.html
todolist.html

login.html:

{% extends "base.html" %}
{% block title %} Login Page {% endblock %}

{% block content %}

    {% with messages = get_flashed_messages() %}
        {% if messages %}
            {% for msg in messages %}
                <p>{{msg}}</p>
            {% endfor %}
        {% endif %}
    {% endwith %}

<form action="{{ url_for('login')}}" method="post">
    <p>Email: </p>
    <p><input type="email" name="email" /></p>

    <p>Password: </p>
    <p><input type="password" name="password" /></p>

    <p><input type="submit" value ="submit" /></p>
</form>
{% endblock %}

Base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" 
    integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css')}}">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
</head>
<body>
    <nav class="navbar navbar-dark bg-dark">
        <a class="navbar-brand" href="#">ToDo App</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
          <div class="navbar-nav">
            <a class="nav-item nav-link active" href="http://127.0.0.1:5000/">Home <span class="sr-only">(current)</span></a>
            <a class="nav-item nav-link" href="http://127.0.0.1:5000/login">Login</a>
            <a class="nav-item nav-link" href="http://127.0.0.1:5000/register">Register</a>
            <a class="nav-item nav-link" href="http://127.0.0.1:5000/logout">Logout</a>
          </div>
        </div>
      </nav>
    {% block content %}
    
    
    
    
    {% endblock %}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" 
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" 
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" 
crossorigin="anonymous"></script>
</body>
</html>

<!--All scripts for the NavBar have been added from https://getbootstrap.com/docs/4.3/getting-started/introduction/.
    Navbar and CSS code taken from https://getbootstrap.com/docs/4.3/components/navbar/ and then edited/customised. -->

Solution

  • Alright, error on my part: the base.html was still using hardcoded addresses, such as:

    <a class="nav-item nav-link" href="http://127.0.0.1:5000/login">Login</a>
    

    Silly oversight! Thank you everyone