백서른두에 도로를 개방 측정 : 편집 구현

 

 

편집 기능을 달성

 

구현 단계 :

1. 바인드 뷰 기능 편집 버튼
2. 편집 페이지로 이동 할 수있는 편집 버튼을 클릭하고 원본 콘텐츠를 렌더링
3. 편집을 제출
4.웨어 하우징, 업데이트, 새로운 콘텐츠 렌더링

 

1 편집 버튼 기능의 뷰를 바인딩 :

app.route @ ( "/ 편집 / <ID> /") 
DEF 편집 (ID = 없음) :
"" "" "HTML ID를 통해 편집 리턴 패스의 프런트 엔드"
는 render_template ( 'edit.html')를 반환

 

 

HTML 편집기 버튼 결합 기능

는 % { 'base.html'%} 연장 

{%} % 차단 main_content
<div 클래스 = "로우">
<표 클래스 = "표 표 호버">
<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 다른 '성공'}} "> {{"未处理"만약 아이템 [7] 다른 == 0"已处理"}} </ SPAN> </ TD>
<TD> {{항목 [9] }} </ TD>
<TD>
<a href="#" class="btn btn-success">查看</a>를
<A HREF = "{{url_for ( '수정'항목 ID = [0]) }} "클래스 ="btn을 BTN 기본 ">编辑</a>를
<A HREF ="{{( 'delete_feedback'항목 ID = [0]) BTN BTN-위험}} "= 클래스 ''url_for>删除</a>에
</ TD>
</ TR>
{%의 ENDFOR의 %}
</ 테이블>
</ div>

{%의 엔드 블록 %}

 

새로운 edit.html

<! -继承base.html -> 
{%가 'base.html'% 연장}

<! -引用base.html预留的正文部分->
{% 블록 main_content %}
<div 클래스 = "로우" >
<DIV 클래스 = "패널 패널 기본">
<DIV 클래스 = "패널 제목">
<H4>问题反馈信息编辑</ H4>
</ DIV>
<DIV 클래스 = "패널 몸">
<폼 액션 = "#"METHOD = "POST"클래스 = "폼 수평">
<div 클래스 = "폼 그룹">
= "제목"클래스 <라벨 = "제어 라벨 COL-MD-2">主题</ 라벨>
<DIV 클래스 = "COL-MD-6">
<input 타입 = "텍스트"클래스 = "폼 제어"ID = "제목"NAME = "제목">
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= 레이블 "카테고리"클래스 = "제어 라벨 COL-MD-2">问题分类</ 라벨>
<div 클래스 = "COL -MD-2 ">
<SELECT NAME ="카테고리 "ID ="카테고리 "클래스 ="폼 제어 ">
<옵션 값 ="1 ">产品质量</ 옵션>
<옵션 값 ="2 ">客户服务</ 옵션>
<옵션 값 = "3">购买支付</ 옵션>
</ 선택>
</ div>
</ div>
<div 클래스 = "폼 그룹">
<라벨 = "이름"클래스 = "제어 라벨 COL-MD-2">姓名</ 라벨>
<div 클래스 = "COL-MD-2">
<input 타입 = "텍스트"클래스 = "폼 제어 "ID ="사용자 이름 "이름 ="사용자 이름 ">
</ DIV>
</ DIV>
<DIV 클래스 ="폼 그룹 ">
이메일 = 대한 <라벨" "클래스 ="제어 라벨 COL-MD-2 ">邮箱</ 라벨>
<div 클래스 = "COL-MD-6">
<input 타입 = "텍스트"클래스 = "폼 제어"ID = '이메일'이름 = "이메일">
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= 레이블 "이미지"클래스 = "제어 라벨 COL-MD-2">图片</ 라벨>
<div 클래스 = "COL-MD-6">
<input 타입 = "파일"ID = "이미지"이름 = "이미지">
</ div>
</ div>

<div 클래스 = "폼 그룹">
= "본체"클래스 <라벨 = "제어 라벨 COL-MD-2">内容</ 라벨>
<div 클래스 = "COL-MD-6">
<텍스트 영역 NAME = "본체"ID = "본체"COLS = "30"행 = "10"클래스 = "폼 제어"> </ 텍스트 영역>
</ DIV>
</ DIV>
<! - 응답, 출시 시간 및 처리 상태를 증가 ->
<div 클래스 = "폼 그룹">
<= 레이블 "응답"클래스 = "제어 라벨 COL-MD-2">回复</ 라벨>
<div 클래스 = "COL-MD-6">
<텍스트 영역 NAME = ID = COLS가 "회신" "회신" = "30"행 = "10"클래스 = "폼 제어"> </ 텍스트 영역>
</ div>
</ div>
<div 클래스 = "폼 그룹">
= "releasetime"클래스 = "제어 <레이블 -label COL-MD-2 ">发布时间</ 라벨>
<div 클래스 ="COL-MD-6 ">
<input 타입 ="텍스트 "NAME ="releasetime "ID = "releasetime"클래스 = "폼 제어">
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= 레이블 "상태"클래스 = "제어 라벨 COL-MD-2">处理状态</ 라벨>
<div 클래스 = "COL-MD-6">
<input 타입 = "체크 박스"NAME = "상태" ID = "상태">
</ div>
</ div>

<div 클래스 = "COL-MD-오프셋 2">
<input 타입 = "제출"클래스 = "btn을 BTN - 우선"값 = "提交">
< 입력 TYPE = "초기화"클래스 = "btn을 BTN 기본"값 = "重置">
</ div>
</ FORM>
</ div>
<DIV 클래스 = "패널 바닥 글">

</ 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 클래스 = "로우" >
<DIV 클래스 = "패널 패널 기본">
<DIV 클래스 = "패널 제목">
<H4>问题反馈信息编辑</ H4>
</ DIV>
<DIV 클래스 = "패널 몸">
<폼 액션 = "#"METHOD = "POST"클래스 = "폼 수평">
<div 클래스 = "폼 그룹">
= "제목"클래스 <라벨 = "제어 라벨 COL-MD-2">主题</ 라벨>
<클래스 = DIV "COL-MD-6">
<! - 테마 렌더링 ->
<input 타입 = "텍스트"값 = "{{항목 [1]}}"클래스 = "폼 제어"ID = "제목"NAME = "제목">
</ div>
</ div>
<div 클래스 = " 폼 그룹 ">
<= 레이블"카테고리 "클래스 ="제어 라벨 COL-MD-2 ">问题分类</ 라벨>
<div 클래스 ="COL-MD-2 ">
<SELECT NAME ="카테고리 " ID = "카테고리"클래스 = "폼 컨트롤">
<! -显示当前问题的问题分类->
{카테고리 %의 범주 %}
<옵션 {{ '선택 = 선택 간다면 항목 [2] == 카테고리 [0] 다른'}} 값 = "{{카테고리 [0]}}"> {{카테고리 [ 1]}} </ 옵션>
{% ENDFOR %}
<선택 />
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= "이름"클래스 라벨 = "제어 라벨 COL-MD-2">姓名</ 라벨>
<div 클래스 = "COL-MD-2">
<! -渲染姓名->
<input 타입 = "텍스트"클래스 = "폼 제어"값 = "{{항목 [3]}}"ID = "사용자 이름"이름 = "사용자 이름">
</ DIV>
</ DIV>
<DIV 클래스 = "폼 그룹 ">
이메일 용 = <레이블", "클래스 ="제어 라벨 COL-MD-2 ">邮箱</ 라벨>
<div 클래스 = "COL-MD-6">
<! -渲染邮箱->
<input 타입 = "텍스트"클래스 = "폼 제어"값 = "{{항목 [4]}}"ID = " 이메일 '이름 = "이메일">
</ div>
</ div>
<div 클래스 = "폼 그룹">
화상 "클래스 ="제어 라벨 COL-MD-2 ">图片</ 라벨 = 대한 <라벨" >
<div 클래스 = "COL-MD-6">
<input 타입 = "파일"ID = "이미지"NAME = "이미지">
</ div>
</ DIV>

<DIV 클래스 = "폼 그룹">
<! - 렌더링 콘텐츠 ->
内容</ 라벨> <= "본체"클래스 = "제어 라벨 COL-MD-2"에 대한 라벨>
<div 클래스 = "COL-MD-6">
<텍스트 영역 NAME = "본체"ID = "본체"COLS = "30"행 = "10"클래스 = "폼 제어"> {{항목 [6]}} </ 텍스트 영역>
</ div>
</ div>
<! -增加回复内容,发布时间和处理状态->
<div 클래스 = "폼 그룹">
<= 레이블 "응답"클래스 = "제어 라벨 COL-MD-2">回复</ 라벨>
<div 클래스 = "COL-MD-6">
<!-渲染回复->
<텍스트 영역 NAME = "회신"ID = "응답"COLS = "30"행 = "10"클래스 = "폼 제어"> {{항목 [8] 항목 경우 [8]}} </ 텍스트 영역>
</ div>
</ div>
<div 클래스 = "폼 그룹">
发布时间</ 라벨> <= "releasetime"클래스 = "제어 라벨 COL-MD-2"에 대한 라벨>
<div 클래스 = "COL -MD-6 ">
<input 타입 ="텍스트 "값 ="{{항목 [9]}} 'NAME = "releasetime"ID = "releasetime"클래스 = "폼 제어">
</ div>
</ DIV >
<div 클래스 = "폼 그룹">
<= 레이블 "상태"클래스 = "제어 라벨 COL-MD-2">处理状态</ 라벨>
<DIV 클래스 = "6-COL-MD.">
<! - 렌더링 상태 ->
<input 타입 = "체크 박스"NAME = "상태"식 "상태"{{ '체크 = 체크 간다면 항목 [7] == 다른 1'}}>
</ div>
</ div>

<div 클래스 = "COL-MD-오프셋 2">
<input 타입 = "제출"클래스 = "btn을 BTN - 우선"값 = "提交">
<input 타입 = 클래스 = "BTN BTN 기본"값을 "초기화"= "重置">
</ div>
</ FORM>
</ div>
<div 클래스 ="패널 꼬리말 ">

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

{% 엔드 블록 %}

 

액세스 자동 렌더링

 

 

 

편집보기를 저장

@ app.route ( "/ save_edit /"메소드 = 'POST']) 
DEF save_edit ()
"" "保存编辑" ""
경우 request.method == 'POST'
ID = request.form.get ( , 없음) 'rowid로'
= request.form.get를 회신 ( '응답')
상태 = 1이면 request.form.get ( '상태'0) == 다른 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 클래스 = "로우" >
<DIV 클래스 = "패널 패널 기본">
<DIV 클래스 = "패널 제목">
<H4>问题反馈信息编辑</ H4>
</ DIV>
<DIV 클래스 = "패널 몸">
<! - -保存的URL ->
<form 조치 = "{{( 'save_edit')} url_for}"METHOD = "POST"클래스 = "폼 수평">
<div 클래스 = "폼 그룹">
= 대한 <레이블 "대상"클래스 = "제어 라벨 COL-MD-2 "> 테마 </ 라벨>
<DIV 클래스 ="COL-MD-6 ">
<! - 테마 렌더링 ->
<input 타입 = "텍스트"값 = "{{항목 [1]}}"클래스 = "폼 제어"ID = "제목"NAME = "제목">
<! -拿到ID,不渲染,用于保存的时候做SQL条件->
<input 타입 = "숨겨진"값 = "{{항목 [0]}}"클래스 = "폼 제어"이드 = NAME = "ROWID"> "rowid로"
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= 레이블 "카테고리"클래스 = "제어 라벨 COL-MD-2">问题分类</ 라벨>
<div 클래스 = "COL-MD-2 ">
<이름 = 선택 (SELECT) "카테고리"위에서 언급 한 id = "카테고리"클래스 = "폼 컨트롤">
<! - 분류 문제의 현재 문제를 표시합니다 ->
{카테고리 %의 범주 %}
<옵션 {{ '선택 = 선택 간다면 항목 [2] == 카테고리 [0] 다른'}} 값 = "{{카테고리 [0]}}"> {{카테고리 [ 1]}} </ 옵션>
{% ENDFOR %}
<선택 />
</ div>
</ div>
<div 클래스 = "폼 그룹">
= "이름"클래스 = "제어 라벨 col-위한 <레이블 MD-2 ">姓名</ 라벨>
<DIV 클래스 ="COL-MD-2 ">
<! -渲染姓名->
<입력 TYPE = "텍스트"클래스 = "폼 제어"값 = "{{항목 [3]}}"ID = "이름"이름 = "이름">
</ div>
</ div>
<div 클래스 = "폼 그룹">
邮箱</ 라벨> <= "이메일"클래스 = "제어 라벨 COL-MD-2"에 대한 라벨>
<div 클래스 = "col- MD-6 ">
<! -渲染邮箱->
<input 타입 ="텍스트 "클래스 ="폼 제어 "값 ="{{항목 [4]}} "ID = '이메일'이름 ="이메일 " >
</ div>
</ div>
<div 클래스 = "폼 그룹">
= "이미지"클래스 <라벨 = "제어 라벨 COL-MD-2 ">图片</ 라벨>
<div 클래스 ="COL-MD-6 ">
<input 타입 ="파일 "ID ="이미지 "NAME ="이미지 ">
</ DIV>
</ DIV>

<DIV 클래스 = "폼 그룹">
<! - 렌더링 콘텐츠 ->
요약 </ <= "라벨 제어-COL-MD-2"= "몸"클래스 레이블> 라벨>
<div 클래스 = "COL-MD-. 6">
<텍스트 영역 명 = "본체"ID = "본체"COLS = "30"행 = "10"클래스 = "폼 제어"> {{항목 [. 6] }} </ 텍스트 영역>
</ DIV>
</ DIV>
<! - 응답 증가 해제 시간 및 처리 상태 ->
<div 클래스 = "폼 그룹">
<= 레이블 "응답"클래스 = "제어 라벨 COL-MD-2">回复</ 라벨>
<div 클래스 = "COL-MD-6">
<! -渲染回复->
<텍스트 영역 NAME = "회신"ID = "응답"COLS = "30"행 = "10"클래스 = "폼 제어"> {{항목 [8] 항목 경우 [8] }} </ 텍스트 영역>
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= "releasetime"클래스 라벨 = "제어 라벨 COL-MD-2">发布时间</ 라벨>
<div 클래스 = "COL-MD-6">
<input 타입 = "텍스트"값 = "{{항목 [9]}} 'NAME ="releasetime "ID ="releasetime "클래스 ="폼 제어 ">
</ div>
</ div>
<div 클래스 = "폼 그룹">
<= 레이블 "상태"클래스 = "제어 라벨 COL-MD-2">处理状态</ 라벨>
<div 클래스 = "COL-MD-6">
<! -渲染处理状态->
<input TYPE = "체크 박스"NAME = "상태"식 "상태"{{ '= 체크 체크 간다면 항목 [7] == 다른 1'}}>
</ div>
</ div>

<div 클래스 = "COL -MD 오프셋-2 ">
<input 타입 ="제출 "클래스 ="btn을 BTN - 우선 "값 ="提交">
<input 타입 ="초기화 "클래스 ="BTN BTN 기본 "값 ="重置">
<! - 당신이 수정하지 않는 경우, 목록 페이지로 돌아 가기를 클릭 ->
<a href="{{ url_for('list') }} "class="btn btn-default"> 목록 페이지 </ 다시 클릭 A>
</ div>
</ FORM>
</ div>
<div 클래스 = "패널 꼬리말">

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

{%의 엔드 블록 %}

 

편집

원래 상태

편집

제출 

 

 

추천

출처www.cnblogs.com/zhongyehai/p/11456547.html