2013-06-18 102 views
1

我被要求創建一個簡單的瓶應用程序,它存儲只是一個單一的文本 場,在一個單一的網頁,並在該用戶應該看到一個形式與「消息「 」字段。下面的表格應該是 數據庫中現有消息的列表。當用戶在「消息」字段中輸入內容並提交表單時,應該將「消息」保存到SQLite中的表中。 AND保存消息後,用戶應回到帶有表單和消息列表的頁面。如何使用表單提交保存信息在數據庫

我堅持在一個點 我不能夠將郵件提交 我的頁面不檢索從已經被存儲在數據庫中,而我創造它的數據庫消息。

但有人可以請指導對提交填好了表單信息的代碼。 我message.html代碼:

{% extends "template.html "%} 
{% block content %} 

    <h2>You are in the Message Page</h2> 
    <br/> 
    <p><h4>In this page, You can view the Existing Messages and can also Submit your own message.</h4></p> 
<br/><br/> 

<h3>Enter Your Message:</h3><br/> 

<form action="" method='POST'> 
<dl> 
    <dt>Message: 
    <dd><input type="text" name=msg_msg maxlength=80 style="width:300px">*Maximum Length = 80 
</dl> 
<input type=submit value="Submit Message"> 

</form> 

<h3>The Existing Messages:</h3> 
{% for item in message %} 
Msg_ID: <B>"{{ item.msg_id }}"</B><br/>Message: {{ item.msg_msg }} <br/><br/> 
{% endfor %} 



{% endblock %} 



and my routes.py code for this is: 


@app.route('/message') 
def message(): 
    g.db = connect_db() 
    cur = g.db.execute('select msg_id, msg_msg from msg') 
    message = [dict(msg_id=row[0], msg_msg=row[1]) for row in cur.fetchall()] 
    g.db.close() 
    return render_template('message.html', message=message) 

@app.route('/message', methods=['GET', 'POST']) 
    def message_1(): 
    error = None 
    if request.method == 'POST': 
    for request.form['input_msg'] = text: 
     g.db = connect_db() 
     cur = g.db.execute('insert into msg_msg from msg') 
     message = [dict(msg_id=row[0], msg_msg=row[1]) for row in cur.fetchall()] 
     g.db.close() 
     return render_template('message.html', message=message) 

     #error = 'Invalid Entry, Please Try Again.' 
else: 
# session['logged_in'] = True 
    return redirect(url_for('message')) 
return render_template('message.html' , error=error) 

回答

1

使用1消息視圖

@app.route('/message', methods=['GET', 'POST']) 
def message(): 
    cur = db.execute('select id,msg from msg_msg') 
    message = [dict(msg_id=row[0], msg_msg=row[1]) for row in cur.fetchall()] 
    if request.method == 'POST': 

     g.db = connect_db() 
     cur = g.db.execute('insert into msg_msg (msg) values (?)',request.form['input_msg']) 
     message = [dict(msg_id=row[0], msg_msg=row[1]) for row in cur.fetchall()] 
     g.db.close() 

    return render_template('message.html' , message = message) 

message.html

{% extends "template.html "%} 
{% block content %} 

<h2>You are in the Message Page</h2> 
<br/> 
<p><h4>In this page, You can view the Existing Messages and can also Submit your own message.</h4></p> 
<br/><br/> 

<h3>Enter Your Message:</h3><br/> 

<form action={{ url_for('message') }} method='POST'> 
<dl> 
<dt>Message: 
<dd><input type="text" name=msg_msg maxlength=80 style="width:300px"> 
</dl> 
<input type=submit value="Submit Message"> 

</form> 

<h3>The Existing Messages:</h3> 
{% for item in message %} 
Msg_ID: <B>"{{ item.msg_id }}"</B><br/>Message: {{ item.msg_msg }} <br/><br/> 
{% endfor %} 

{% endblock %} 
+0

但隨後又怎麼會在我的網頁letme看到現有消息???? – Abhimanyu

+0

正確。更新答案 – codegeek

+0

嘿,我做了與你的代碼 但現在我得到一個錯誤 「提供綁定的sqlite3.ProgrammingError 數字錯誤,當前語句使用1,並有25供電。」 現在我該如何解決這個問題??? / – Abhimanyu

相關問題