Self-Improvement
Head First Python 5-2장 본문
※http://python.itcarlow.ie/ed2/ch05/에서 파일들을 받을 수 있음
*웹앱 hello_flask.py 최종 예제
윈도우에서 작성함
---------------------hello_flask.py------------------------
#render_template와 request을 임포트를 한다.
from flask import Flask, render_template, request
#4장에서 작성한 vsearch.py모듈을 사용
from vsearch import search4letters
app = Flask(__name__)
@app.route('/search4', methods=['POST']) #URL 경로와 POST메소드를 사용 (데이터를 수용하기 위해)
def do_search() -> 'html':
phrase=request.form['phrase'] #phrase폼에 입력한 값을 받아온다
letters=request.form['letters'] #letters폼에 입력한 값을 받아온다
title = 'Here are your results:'
results = str(search4letters(phrase, letters)) #vsearch의 선언된 함수를 사용(4장 참조)
#results.html로 렌더링을 하며 값을 넘겨준다.
return render_template('results.html', the_phrase=phrase, the_letters=letters, the_title=title, the_results=results,)
#'/'경로시 '/entry'로 가게한다.
@app.route('/')
@app.route('/entry')
def entry_page() -> 'html':
#entry.html로 렌더링을 하며 값을 넘겨준다.
return render_template('entry.html', the_title='Welcome to search4letters on the web!')
app.run(debug=True) #디버거를 활성화사키며 코드변경시 자동으로 재실행
---------------------------------------------------------------
*html파일
template폴더에 entry.html, base,html, results,html 파일이 세개 있어야한다.
{% extends 'base.html' %}
{% block body %}
<h2>{{ the_title }}</h2>
<form method='POST' action='/search4'>
<table>
<p>Use this form to submit a search request:</p>
<tr><td>Phrase:</td><td><input name='phrase' type='TEXT' width='60'></td></tr>
<tr><td>Letters:</td><td><input name='letters' type='TEXT' value='aeiou'></td></tr>
</table>
<p>When you're ready, click this button:</p>
<p><input value='Do it!' type='SUBMIT'></p>
</form>
{% endblock %}
-----------------------------------------------------------------
<!doctype html>
<html>
<head>
<title>{{ the_title }}</title>
<link rel="stylesheet" href="static/hf.css" />
</head>
<body>
{% block body %}
{% endblock %}
</body>
</html>
-----------------------------------------------------------------
{% extends 'base.html' %}
{% block body %}
<h2>{{ the_title }}</h2>
<p>You submitted the following data:</p>
<table>
<tr><td>Phrase:</td><td>{{ the_phrase }}</td></tr>
<tr><td>Letters:</td><td>{{ the_letters }}</td></tr>
</table>
<p>When "{{the_phrase }}" is searched for "{{ the_letters }}", the following
results are returned:</p>
<h3>{{ the_results }}</h3>
{% endblock %}
---------------------------------------------------------------
*hf.css파일 작성 (교재의 스타일을 위하여 작성)
-------------------------hf.css--------------------------
body {
font-family: Verdana, Geneva, Arial, sans-serif;
font-size: medium;
background-color: tan;
margin-top: 5%;
margin-bottom: 5%;
margin-left: 10%;
margin-right: 10%;
border: 1px dotted gray;
padding: 10px 10px 10px 10px;
}
a {
text-decoration: none;
font-weight: 600;
}
a:hover {
text-decoration: underline;
}
a img {
border: 0;
}
h2 {
font-size: 150%;
}
table {
margin-left: 20px;
margin-right: 20px;
caption-side: bottom;
border-collapse: collapse;
}
td, th {
padding: 5px;
text-align: left;
}
.copyright {
font-size: 75%;
font-style: italic;
}
.slogan {
font-size: 75%;
font-style: italic;
}
.confirmentry {
font-weight: 600;
}
/*** Tables ***/
table {
font-size: 1em;
background-color: #fafcff;
border: 1px solid #909090;
color: #2a2a2a;
padding: 5px 5px 2px;
border-collapse: collapse;
}
td, th {
border: thin dotted gray;
}
/*** Inputs ***/
input[type=text] {
font-size: 115%;
width: 30em;
}
input[type=submit] {
font-size: 125%;
}
select {
font-size: 125%;
}
----------------------------------------------------
*실행
app.run(debug=True)로 인해 디버거가 활성화되었으며 코드변경시 자동으로 재시작을 해준다.
'프로그래밍 > Python' 카테고리의 다른 글
Python의 requests Base64 Dictionary 코드 (0) | 2019.01.09 |
---|---|
Python의 requests 모듈을 통한 DVWA-Low Brute Force 자동화 코드 (0) | 2018.10.25 |
Head First Python 6-1장 (0) | 2018.10.21 |
requests으로 DVWA Low XSS (0) | 2018.10.21 |
requests으로 DVWA의 Login-dirctionary (0) | 2018.10.21 |