Skip to content
Advertisement

Why is my website throwing POST error in python?

I’m sending request to League of Legends API for JSON file. In 3 others tries it worked for me, but in last it doesn’t. I have no idea why and can’t find any mistakes.

My request for getting JSON file

def challengerPlayers(region, types, APIkey):
    URL = "https://" + region + ".api.pvp.net/api/lol/" + region + "/v2.5/league/master?type=" + types + "&api_key=" + APIkey
    response = requests.get(URL)
    return response.json()

My website function for return the results. Place, where is mistake, is highlighted with comment.

@app.route('/hello', methods=['post'])
def hello():
    region = request.form['region']
    summonerName = request.form['summonerName']
    APIkey = request.form['APIkey']
    types = request.form['types']
    responseJSON = getData(region, summonerName, APIkey)
    ID = responseJSON[summonerName]['id']
    ID = str(ID)
    responseJSON2 = getRankedData(region, ID, APIkey)
    divisionName = responseJSON2[ID][0]['name']
    responseJSON3 = challengerPlayers(region, str(types), APIkey)
    #Here is the problem ↓↓↓
    challengerPlayers = responseJSON3['entries'][0]
    #print challengerPlayers    
    return render_template('form_action.html', ID = ID,  divisionName = divisionName, challengerPlayers = challengerPlayers)

Last, but not least, my website form

<form class="form" method="post" action="/hello">
    <div class="form-group">
        <label for="regio">Region</label>
        <input type="text" name="region"/>
    </div>
    <div class="form-group">
        <label for="summonerNam">Summoner Name</label>
        <input type="text" name="summonerName"/>
    </div>
    <div class="form-group">
        <label for="apiKe">API Key</label>
        <input type="text" name="APIkey"/>
    </div>
    <div class="form-group">
        <label for="type">Ranked type</label>
        <input type="text" name="types"/>
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
</form>

PS: Added JSON file

{
  "queue": "RANKED_SOLO_5x5",
  "name": "Nasus's Agents",
  "entries": [
  {
    "leaguePoints": 0,
    "isFreshBlood": false,
    "isHotStreak": false,
    "division": "I",
    "isInactive": false,
    "isVeteran": true,
    "losses": 402,
    "playerOrTeamName": "Ä  L  F  A",
    "playerOrTeamId": "28880245",
    "wins": 445
  }
}

Advertisement

Answer

The error does not lie exactly where you think it does.

responseJSON3 = challengerPlayers(region, str(types), APIkey)
#Here is the problem ↓↓↓
challengerPlayers = responseJSON3['entries'][0]
#print challengerPlayers    

The error is actually on the first line above (you can see it on your screenshot). You call the function challengerPlayers, but it is not defined (that’s exactly what the error message is telling you).

You should implement this function or fix the name in the function call.

By the way, you call a variable with the same name as a function, which is a bad practice.

Advertisement