2016-12-20 3 views
0

Я построил вложенные выпадающие меню в своем HTML и на основе того, какой пользователь нажимает внутри вложенного раскрывающегося списка, я хочу, чтобы он изменил значение по умолчанию внутри формы WTF и отправил его в базу данных.flask dynamic post url

Итак, у меня есть несколько разных видов, указывающих на один «пост». Эти несколько разных видов - это разные меню в моих вложенных меню выпадающего меню.

просмотров

@app.route('/first_drop_down') 
def first_drop_down(): 
    return redirect('http://127.0.0.1:5000/post_something/first/') 
@app.route('/second_drop_down') 
def second_drop_down(): 
    return redirect('http://127.0.0.1:5000/post_something/second/') 
@app.route('/post_something/<some_parameter>', methods=['GET','POST']) 
def post_something(some_parameter) 
    some_form = SomeForm() 
    if some_parameter == 'first': 
    some_form = SomeForm(field_a = some_parameter) 
    elif some_parameter == 'second': 
    some_form = SomeForm(field_a = some_parameter) 
    if some_form.validate_on_submit(): 
    . 
    . 
    . 
    . 
    insert to db 
    return redirect(url_for('index')) 
    return render_template('user_input.html', some_paramter = some_paramter) 

Таким образом, проблема, что у меня есть, что я получаю 404 сразу после того, я нажимаю отправить на мою форму. И когда вы получаете запрос на post_something view, url is/post_something/first /, но после нажатия кнопки отправки URL-адрес изменяется на/post_something //, поэтому URL-адрес пуст для сообщения, и я предполагаю, что он выбрасывает 404 Несмотря на то, что я предполагаю, почему это происходит, я как бы застрял в том, что делать, чтобы поддерживать этот URL-адрес при публикации. Любая помощь будет оценена.

+0

Я думаю, проблема в вашем коде HTML. Не могли бы вы разместить его с формой и выпадающими списками? –

ответ

0

от flask api documentation, вы заметите 1. If a rule ends with a slash and is requested without a slash by the user, the user is automatically redirected to the same page with a trailing slash attached. 2. If a rule does not end with a trailing slash and the user requests the page with a trailing slash, a 404 not found is raised. Теперь, когда вы определили: @app.route('/post_something/<some_parameter>', methods=['GET','POST']) вы должны использовать /post_something/first в вашей форме, или использовать url_for('post_something') вместо этого.