百三十から二への道を開い測定:編集を実装

 

 

編集機能を実現します

 

実装手順:

1.バインドビュー機能の編集ボタン
編集ページにジャンプするには、[編集]ボタンをクリックして、オリジナルのコンテンツレンダリング2.
3. [編集]を、提出
4.倉庫、アップデート、新しいコンテンツのレンダリングを

 

1、編集ボタン機能のビューを結合:

app.route @( "/編集/ <ID> /")
DEF編集(ID =なし):
"" "" "HTML IDオーバー編集リターンパスのフロントエンド"
render_template( 'edit.html')を返します

 

 

HTMLエディタボタンの結合機能

%{ 'base.html' %}延び

{%}%のブロックmain_content
<DIV CLASS = "行">
<テーブルクラス= "表表ホバー">
<TR>
<TH> ID </ TH>
<TH>トピック</ TH>
<TH>カテゴリ</ TH>
<TH>ユーザー</ TH>
<TH>のメールボックス</ TH>
<TH>処理状況</ TH>
<TH>提出</ TH>
<TH>操作</ TH>
</ TR>
{%}アイテムのアイテムの%
<TR>
<TD> loop.index {{}} </ TD> <! - ID関数設けテンプレート神社トラバース- >
<TD> {{項目[1]}} </ TD>
<TD> {{アイテム[2]}} </ TD>
<TD> {{項目[3]}} </ TD>
<TD> {{アイテム[4]}} </ TD>
<TD> <スパンクラス= "ラベルラベル- {{ '危険'もし項目[7 ] ==他0 '成功'}} "> {{ "未处理" IF項目[7] ==他0 "已处理"}} </スパン> </ TD>
<TD> {{アイテム[9] }} </ TD>
<TD>
<a href="#" class="btn btn-success">查看</a>に
は、<a href = "{{なurl_for( '編集'、ID =項目[0]) }}」クラス= "BTN BTNデフォルト">编辑</a>の
<HREF = "{{( 'delete_feedback'、ID =項目[0])BTN BTN-危険}}" =クラス""なurl_for>删除</a>の
</ TD>
</ TR>
{%ENDFOR%}
</ TABLE>
</ div>

{%の末端ブロック%}

 

新edit.html

<! -继承base.html - > 
{%が'base.html' %延び}

<! -引用base.html预留的正文部分- >
{%ブロックmain_content%}
<DIV CLASS = "行" >
<DIV CLASS = "パネルパネル-デフォルト">
<DIV CLASS = "パネルの見出し">
<H4>问题反馈信息编辑</ H4>
</ div>
<divのクラス= "パネル体">
<フォームアクション= "#" METHOD = "POST"クラス= "フォーム水平">
<DIV CLASS = "フォームグループ">
= "被験者"クラスの<LABEL = "コントロールラベルCOL-MD-2">主题</ラベル>
<DIVクラス= "COL-MD-6">
の<input type = "text"のクラス= "フォームコントロール" ID = "被験者"名前= "対象">
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "カテゴリ"クラスのラベル= "コントロールラベルCOL-MD-2">问题分类</ label>は
<DIV CLASS = "COL -MD-2 ">
<SELECT NAME ="カテゴリ」ID = "カテゴリ"クラス= "フォームコントロール">
<オプション値= "1">产品质量</オプション>
<オプション値= "2">客户服务</オプション>
<オプション値= "3">购买支付</オプション>
</ select>の
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<ラベル= "ユーザ名"クラス= "コントロールラベルCOL-MD-2">姓名</ label>は
<DIV CLASS = "COL-MD-2">
の<input type = "text"のクラス= "フォームコントロール"ID ="ユーザ名」名前= "ユーザ名">
</ div>
</ div>
<divのクラス= "フォームグループ">
メール=のための<ラベル""クラス= "コントロールラベルCOL-MD-2">邮箱</ label>は
<DIV CLASS = "COL-MD-6">
の<input type = "text"のクラス= "フォームコントロール" ID = "メール" NAME = "メール">
</ div>
</ div>
<DIV CLASS = "フォームグループ">
图片</ label>は<= "画像"クラス= "コントロールラベルCOL-MD-2"のラベル>
<DIV CLASS = "COL-MD-6">
の<input type = "ファイル" ID = "画像"名前= "画像">
</ div>
</ div>

<DIV CLASS = "フォームグループ">
= "ボディ"クラスの<LABEL = "コントロールラベルCOL-MD-2">内容</ label>は
<DIVクラス= "COL-MD-6">
<テキストエリア名= "本体" ID = "本体" COLS = "30"行= "10"クラス= "フォームコントロール"> </ TEXTAREA>
</ div>
</ div>
<! -返信、リリースタイムと処理状況を向上させる- >
<divのクラス= "フォームグループ">
<=用ラベル"返信"クラス= "コントロールラベルCOL-MD-2">回复</ label>は
<DIV CLASS = "COL-MD-6">
<テキストエリア名= ID = COLSを"返信"、 "返信" = "30"行= "10"クラス= "フォームコントロール"> </ TEXTAREA>
</ div>
</ div>
<DIV CLASS = "フォームグループ">
= "releasetime"クラス= "コントロールの<ラベル-label COL-MD-2 ">发布时间</ label>は
<DIV CLASS =" COL-MD-6 ">
の<input type =" text」の名= "releasetime"ID = "releasetime"クラス= "フォームコントロール">
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<=用ラベル"状態"クラス= "コントロールラベルCOL-MD-2">处理状态</ label>は
<DIV CLASS = "COL-MD-6">
の<input type = "チェックボックス" NAME = "状態" ID = "状態">
</ div>
</ div>

<DIV CLASS = "COL-MD-オフセット-2">
の<input type = "提出"クラス= "BTN BTN原色"値= "提交">
<入力タイプ= "リセット"クラス= "BTN BTNデフォルト"値= "重置">
</ div>
</ FORM>
</ div>
<DIV CLASS = "パネルフッタ">

</ div>
</ div>
</ div>

{%の末端ブロック%}

結果を見てください

 

 

 

2、元のコンテンツを取得してレンダリング

app.route @( "/編集/ <ID> /")
DEF編集(ID =なし):
"" "HTML IDオーバー編集リターンパスのフロントエンド" ""
コン= sqlite3.connect(DATABASE)
C =コネティカット.CURSOR()

は、バインドされ、ドロップダウンリストを取得する
SQL =「SELECT ROWID、カテゴリからカテゴリ名」
.fetchallカテゴリー= c.execute(SQL)()

現在のID情報を取得し、修正のために準備するためのフォームを形成するために結合し
= SQL "SELECT ROWID、WHERE * ROWIDからのフィードバック=?"
curren_feedback = c.execute(SQL、(前述したID、))。fetchone()

はconn.close()
リターンSTR(curren_feedback)#ビューはデータ・シーケンスをチェックアウト、簡単な仕分けHTML描画
リターンrender_template( 'edit.html'、カテゴリ =カテゴリ、アイテム= curren_feedbackを)

 

edit.html

<! -继承base.html - > 
{%が'base.html' %延び}

<! -引用base.html预留的正文部分- >
{%ブロックmain_content%}
<DIV CLASS = "行" >
<DIV CLASS = "パネルパネル-デフォルト">
<DIV CLASS = "パネルの見出し">
<H4>问题反馈信息编辑</ H4>
</ div>
<divのクラス= "パネル体">
<フォームアクション= "#" METHOD = "POST"クラス= "フォーム水平">
<DIV CLASS = "フォームグループ">
= "被験者"クラスの<LABEL = "コントロールラベルCOL-MD-2">主题</ラベル>
<クラス= DIV "COL-MD-6">
<! -テーマをレンダリング- >
<input type = "text"の値= "{{項目[1]}}"クラス= "フォームコントロール" ID = "被験者" NAME = "被験者">
</ div>
</ div>
<DIV CLASS =」フォーム・グループ">
<=のラベル"カテゴリ」クラス= "コントロールラベルCOL-MD-2">问题分类</ label>は
<DIV CLASS = "COL-MD-2">
<SELECT NAME = "カテゴリ" ID = "カテゴリ"クラス= "フォームコントロール">
<! -显示当前问题的问题分类- >
{カテゴリ%でカテゴリの%}
<オプション{{ '選ば=選択された'項目場合、[2] ==カテゴリ[0]他の''}}値= "{{カテゴリ[0]}}"> {{カテゴリ[ 1]}} </オプション>
{%ENDFOR%}
</選択>
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "ユーザ名"クラス= "コントロールラベルCOL-MD-2"のラベル>姓名</ラベル>
<DIV CLASS = "COL-MD-2">
<! -渲染姓名- >
の<input type = "text"のクラス= "フォームコントロール"値= "{{項目[3]}}" ID = "ユーザ名"名前= "ユーザ名">
</ div>
</ div>
<divのクラス=」フォーム・グループ">
<=のラベル"メール」クラス= "コントロール・ラベルCOL-MD-2">邮箱</ label>は
<DIV CLASS = "COL-MD-6">
<! -渲染邮箱- >
の<input type = "text"のクラス= "フォームコントロール"値= "{{アイテム[4]}}" ID =」電子メール」の名前は= "メール">
</ div>
</ div>
<divのクラスには、= "フォームグループ">
<=のラベル"画像"クラス= "コントロールラベルCOL-MD-2">图片</ラベル>
<DIV CLASS = "COL-MD-6">
の<input type = "ファイル" ID = "画像" NAME = "画像">
</ div>
</ DIV>

<DIV CLASS = "フォームグループ">
<! -コンテンツをレンダリング- >
内容</ label>は<= "本体"クラス= "コントロールラベルCOL-MD-2"のラベル>
<DIV CLASS = "COL-MD-6">
<テキストエリア名= "本体" ID = "ボディ" COLS = "30"行= "10"クラス= "フォームコントロール"> {{項目[6]}} </ TEXTAREA>
</ div>
</ div>
<! -增加回复内容、发布时间和处理状态- >
<DIV CLASS = "フォームグループ">
<=用ラベル"返信"クラス= "コントロールラベルCOL-MD-2">回复</ label>は
<DIV CLASS = "COL-MD-6">
<!-渲染回复- >
<テキストエリア名= "応答" ID = "応答" COLS = "30"行= "10"クラス= "フォームコントロール"> {{アイテム[8]の項目であれば、[8]}} </ TEXTAREA>
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "releasetime"クラスのラベル= "コントロールラベルCOL-MD-2">发布时间</ label>は
<DIV CLASS = "COL -MD-6 ">
の<input type =" text」の値= "{{アイテム[9]}}" NAME = "releasetime" ID = "releasetime"クラス= "フォームコントロール">
</ div>
</ DIV >
<DIV CLASS = "フォームグループ">
<=用ラベル"状態"クラス= "コントロールラベルCOL-MD-2">处理状态</ラベル>
<DIV CLASS = "6-COL-MD。">
<! -レンダリングの状態- >
<input type = "チェックボックス" NAME = "状態" ID = "状態" {{ 'チェック=をチェック'もし項目[7] ==他の1 ''}}>
</ div>
</ div>

<DIV CLASS = "COL-MD-オフセット-2">
の<input type = "提出"クラス= "BTN BTN原色"値= "提交">
の<input type =クラス= "BTN BTNデフォルト"値を"リセット" = "重置">
</ div>
</ FORM>
</ div>
<DIV CLASS ="パネルフッタ">

</ div>
</ div>
</ div>

{%の末端ブロック%}

 

アクセスへの自動レンダリング

 

 

 

編集ビューを保存

@ app.route( "/ save_edit /"、メソッド= [ 'POST'])
DEF save_edit():
"" "保存编辑"""
もしrequest.method == 'POST':
ID = request.form.get( 'ROWID'、なし)
の回答= request.form.get( '返信')
状態= 1他0 'on'にrequest.form.get( '状態'、0)==場合は
、SQL =「更新フィードバック=返信を設定しますか? 、国家=?どこROWID =?」
CONN = sqlite3.connect(DATABASE)
C = conn.cursor()
c.execute(SQL、(応答、状態、ID))
conn.commit()
はconn.close()
リターンリダイレクト(なurl_for( 'リスト'))

 

 

edit.html

<! -继承base.html - > 
{%が'base.html' %延び}

<! -引用base.html预留的正文部分- >
{%ブロックmain_content%}
<DIV CLASS = "行" >
<DIV CLASS = "パネルパネル-デフォルト">
<DIV CLASS = "パネルの見出し">
<H4>问题反馈信息编辑</ H4>
</ div>
<divのクラス= "パネル体">
<! - -保存的URL - >
<フォームアクション= "{{なurl_for( 'save_edit')}}"方法は= "POST"クラス= "フォーム水平">
<DIVクラスは= "フォームグループ">
<ラベル= 「対象」クラス=」コントロールラベルCOL-MD-2 ">テーマ</ label>は
<DIV CLASS =" COL-MD-6「>
<! -テーマをレンダリング- >
<input type = "text"の値= "{{項目[1]}}"クラス= "フォームコントロール" ID = "被験者" NAME = "被験者">
<! -拿到ID、不渲染、用于保存的时候做SQL条件- >
<入力タイプ= "隠れた"値= "{{アイテム[0]}}"クラス= "フォームコントロールは、" IDは=名= "行ID"> "行識別子"
</ div>
</ DIV>
<DIV CLASS = "フォームグループ">
<= "カテゴリ"クラスのラベル= "コントロールラベルCOL-MD-2">问题分类</ label>は
<DIV CLASS = "COL-MD-2 「>
<名前= SELECT「カテゴリ」上記のid =「カテゴリ」クラス=「フォームコントロール」>
<! -分類問題の現在の問題を表示します- >
{カテゴリ%でカテゴリの%}
<オプション{{ '選ば=選択された'項目場合、[2] ==カテゴリ[0]他の''}}値= "{{カテゴリ[0]}}"> {{カテゴリ[ 1]}} </オプション>
{%ENDFOR%}
</選択>
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "ユーザ名"クラスのラベル=「制御ラベルcol- MD-2 ">姓名</ label>は
<DIV CLASS =" COL-MD-2" >
<! -渲染姓名- >
<入力タイプ= "テキスト" クラス= "フォームコントロール" 値= "{{項目[3]}}" ID = "ユーザ名" NAME = "ユーザ名">
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "メール"クラスのラベル= "コントロールラベルCOL-MD-2">邮箱</ label>は
<DIV CLASS = "col- MD-6 ">
<! -渲染邮箱- >
の<input type =" text」のクラス= "フォームコントロール"値= "{{アイテム[4]}}" ID = "メール" NAME = "メール" >
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "画像"クラスのラベル=」コントロールラベルCOL-MD-2 ">图片</ label>は
<DIV CLASS =" COL-MD-6 ">
の<input type ="ファイル」ID = "画像" NAME = "画像">
</ DIV>
</ DIV>

<DIV CLASS = "フォームグループ">
<! -コンテンツレンダリング- >
<= "身体"クラス= "Labelコントロール-COL-MD-2"のラベルを>概要</ラベル>
<DIV CLASS = "COL-MD-。6">
<TextAreaの名= "本体" ID = "本体" COLS = "30"行= "10"クラス= "フォームコントロール"> {{アイテム[6] }} </のTextArea>
</ div>
</ div>
<! -返信増加リリースタイムと処理状態- >
<divのクラス= "フォームグループ">
回复</ label>は<= "応答"クラスは= "コントロールラベルCOL-MD-2"のラベル>
<DIV CLASS = "COL-MD-6">
<! -渲染回复- >
<テキストエリア名= "応答" ID = "応答" COLS = "30"行= "10"クラス= "フォームコントロール"> {{アイテム[8]の項目であれば、[8] }} </ TEXTAREA>
</ div>
</ div>
<DIV CLASS = "フォームグループ">
<= "releasetime"クラスのラベル= "コントロールラベルCOL-MD-2">发布时间</ラベル>
<DIV CLASS = "COL-MD-6">
の<input type = "text"の値= "{{アイテム[9]}}" NAME = "releasetime" ID = "releasetime"クラス= "フォームコントロール">
</ div>
</ div>
<DIV CLASS = "フォームグループ">
处理状态</ label>は<= "状態"クラス= "コントロールラベルCOL-MD-2"のラベル>
<DIV CLASS = "COL-MD-6">
<! -渲染处理状态- >
<入力は、タイプ= "チェックボックス" NAME = "状態" ID = "状態" {{ 'チェック=チェック'アイテムなら[7]他== 1 ''}}>
</ div>
</ div>

<DIV CLASS = "COL -MDオフセット-2 ">
の<input type ="提出」クラス= "BTN BTN原色"値= "提交">
の<input type = "リセット"クラス= "BTN BTNデフォルト"値= "重置">
<! -あなたが変更したくない場合は、リストページに戻るをクリック- >
<a href="{{ url_for('list') }} "class="btn btn-default"> / <バックリストページへのクリックA>
</ div>
</ FORM>
</ div>
<DIV CLASS = "パネルフッタ">

</ div>
</ div>
</ div>

{%の末端ブロック%}

 

それを編集します

原状

編集します

提出します 

 

 

おすすめ

転載: www.cnblogs.com/zhongyehai/p/11456547.html
おすすめ