2017-09-19 4 views
-2

Voici mon code:url_for dans un flacon: BuildError - ne pouvait pas construire URL pour point final

<!DOCTYPE html> 
<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="static/test.css"> 
</head> 
<body> 
    {% for i in range(result['data']|length) %} 
     <div id="wrapper"> 
     {% for key, value in result['data'][i].iteritems() %} 
      <div id="first">{{ key }}</div> 
      <div id="second"><a href="{{ url_for('employees_name', employee_id=value)}}">{{ value }}</a></div> 
     {% endfor %} 
     </div> 
     &nbsp; 
    {% endfor %} 
</body> 
</html> 

Quand je passe variable "valeur" à "employee_id" Je reçois une erreur:

BuildError: Could not build url for endpoint 'employees_name'. Did you forget to specify values ['employee_id']?

Qu'est-ce bizarre, quand je passe la variable "key" à "employee_id", tout va bien mais j'ai besoin de passer la variable "value". Qu'est-ce qui peut causer le problème? Merci!

+0

Qu'est-ce que l'enregistrement '@ app.route()' pour ce point de terminaison? –

+0

Aussi, êtes-vous sûr à 100% que c'est ** que 'url_for()' appelle ** qui provoque l'erreur de construction? Que se passe-t-il si vous supprimez temporairement cet appel? –

+0

Veuillez [modifier] pour inclure un [mcve]. – davidism

Répondre

0

J'ai changé mon script et maintenant il ressemble à ceci. Ça marche.

<!DOCTYPE html> 
    <html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="static/test.css"> 
    </head> 
    <body> 
     {% for i in range(result['data']|length) %} 
      <div id="wrapper"> 
      {% for key, value in result['data'][i].iteritems() %} 
       <div id="first">{{ key }}</div> 
       <div id="second">{{ value }}</div> 
      {% endfor %} 
      <div><a href="{{ url_for('employees_name', employee_id=result['data'][i]['EmployeeId'])}}">More</a></div> 
      </div> 
      &nbsp; 
     {% endfor %} 
    </body> 
    </html> 
1

Alors que vous pouvez tester le code en codant en dur la valeur pour employee_id et tester si c'est le problème, je pense que votre problème est que {{ value }} est vide.

puisque nous n'avons pas le code pour employees_name vue, je vous suggère de déboguer comme ceci:

  • vérifier le lien avec href vide, afin que vous puissiez voir ce que {{value}} est et est-ce que vous veulent passer à la vue ou non

  • vérifier ce qui est le retour de la boucle sur result['data'][i] et si cela a un résultat tout

  • je voudrais vérifier si il est result['data'] du tout par un {% if result %} pour commencer

mais encore une fois, hardcode la valeur pour employee_id en href pour voir si le problème est avec {{value}} ne pas être présent ou autre chose que ce qui est l'origine du problème.

par exemple, si value n'est pas le même type de variable que vous obtenez dans votre @app.route, vous pouvez obtenir cette erreur.

+0

'{{value}}' n'est pas vide .. cette valeur est affichée dans un navigateur .. et dans url_for() j'ai eu cette erreur .. mais je l'ai changé pour 'result ['data'] [i] ['EmployeeId'] 'et ça marche .. – pingwin850