2017-09-15 1 views
-1

ma méthode Blueprint échoue dès que je rentre un paramètre dans la méthode:Flask méthode Plan directeur ne reçoit pas l'argument Jinja

TypeError: get_streetreport() missing 1 required positional argument: 'number' 

Appelé de Jinja:

<form class="form-horizontal" action = "{{ url_for('street_reports.get_streetreport', number=number) }}" method="post"> 

Pour votre information, je peux voir la variable numéro est accessible sur cette même page d'appel:

<p>You have entered "{{ number }}" in the property name/number field on the previous page.</p> 

Cette méthode Blueprint qui est appelée:

@street_report_blueprint.route('/street_report', methods=['POST', 'GET']) 
def get_streetreport(number): 
    mainselection = request.form['MainlistRadios'] 
    return render_template('street_reports/street_report.jinja2', mainselection = mainselection) 

Si je supprime le paramètre de get_streetreport(), la page se charge correctement sur l'hôte local. 'number' est une variable chaîne. Tx toute aide.

Répondre

0

Mise à jour: vous devez déclarer le paramètre dans le chemin d'accès.

@street_report_blueprint.route('/street_report/<number>', …)

Si number devrait être un entier, il serait .../<int:number>

Voir http://flask.pocoo.org/docs/0.12/quickstart/#variable-rules

Pour ajouter des parties variables à une URL que vous pouvez marquer ces sections spéciales. Une telle partie est ensuite passée en tant qu'argument mot-clé à votre fonction. En option, un convertisseur peut être utilisé en spécifiant une règle avec.


Vous devez passer le paramètre numéro dans render_template

return render_template(....., number=number)

+0

OK J'ai changé la dernière ligne pour tester ceci: 'render_template de retour (' street_reports/street_report.jinja2' , nombre = number) 'mais toujours le même message d'erreur. –

+0

Merci @Ivan Ma compréhension était action = '" {{url_for ('street_reports.get_streetreport', number = number)}} "' passe l'argument 'number' à la méthode get_streetreport, et l'erreur dit get_streetreport manque l'argument. Je suppose que l'erreur n'est pas vraiment dans la ligne render_template, mais je suis débutant chez Flask. Je voudrais inclure plus d'informations si je savais ce qui est nécessaire. Re votes négatifs, j'ai fait des efforts pour rechercher Google et SO pour les réponses, mais pas trouvé. De même, je l'ai intitulé de mon mieux. –

+0

Ps Je pense que la downvote est injustifiée. +1 pour vous Bonne chance! –