2015-04-10 3 views
2

Я новичок в колбе и html. Я получаю ошибку сборки, когда я пытаюсь использовать атрибут action в своем html-коде, и я не знаю, почему это происходит. это мой HTML-код:url_for Ошибка сборки

<div class="post"> 
<form method=post action="{{url_for('add_post')}}" ></a> 
<input type="text" name="post" placeholder="What's happenig?" /> 
<input type="submit" value="post" class="post_button" > 
</div><!--end of class post--> 

и моя колба:

@app.route('/mk/add_post/<username>' , methods=['POST']) 
def add_post(): 
    if request.method == 'POST': 
     text=request.form('post') 
     user=session['username']   
     post(user , text) 
     p='/mk/main/%s'%username 
     return redirect(p) 

и я получаю эту ошибку:

BuildError: ('add_post', {}, None) 

любые идеи?

+0

, как я знаю, что это должно быть имя функции – mahnooosh

+0

и аргументы функции, почему он нуждается в имени пользователя? – mahnooosh

ответ

1

Вам не нужно определять ваш URL-адрес как @app.route('/mk/add_post/<username>' , methods=['POST']), так как вы выбираете сеанс формы имени пользователя. Это должно работать:

@app.route('/mk/add_post' , methods=['POST']) 
def add_post(): 
    ... 

В случае, если вы хотите придерживаться '/mk/add_post/<username>'. Изменить шаблон:

<form method=post action="{{url_for('add_post', username='mahnoosh')}}" ></a> 

ПРИМЕЧАНИЕ: Также вы забыли добавить имя пользователя в качестве аргумента.

@app.route('/mk/add_post/<username>' , methods=['POST']) 
def add_post(username): 
    ... 

Вот как я тестировал:

питон скрипт:

from flask import *         

app = Flask(__name__)         

@app.route('/mk/add_post/<username>' , methods=['POST'])  
def add_post(username):        
    if request.method == 'POST':      
     print username        
     return username        

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

if __name__ == "__main__":       
    app.run(host='0.0.0.0', debug=True, port=5050) 

so.html:

<html>                   
<div class="post">                
    <form method=post action="{{url_for('add_post', username='mahnoosh')}}" ></a> 
<input type="text" name="post" placeholder="What's happenig?" />    
<input type="submit" value="post" class="post_button" >      
</div>                   
</html> 
+0

Я думаю, проблема связана с url_for form action – mahnooosh

+0

@mahnooosh, да, и здесь требуется вход, здесь, имя пользователя. Вам нужно указать его. –

+0

Я получаю эту ошибку: TypeError: add_post() не принимает аргументов (1 данный) – mahnooosh

Смежные вопросы