# nmae.py
print(__name__) # __main__ 출력
# name2.py
def test():
return __name__
# name3.py
import name2
print(name2.test()) # name2
__name__ 의 역할은 호출한 파일이름을 출력한다. 다만, 자기자신에서 호출하면 main을 반환.✅ __name__ 은 일반적으로 다른 모듈을 만들 때 디버깅이나 테스트용으로 쓰인다.
def nodeco1():
return [10, 20, 30]
def nodeco2():
return [20, 30, 40]
def add_nodeco():
def wrapper(nodeco):
print("이 배열의 합은", sum(nodeco1())) # sum에 nodeco2를 넣는 함수 작성 필요
return wrapper
# 함수 자체를 넘겨준다. add의 반환값이 함수가 된다.
add_nodeco()(nodeco1) # 이 배열의 합은 60
add_nodeco()(nodeco2) # 이 배열의 합은 60 << 정확하게 나오게 하려면 add_nodeco 작성필요.
# Decorator를 사용하면?
def special(func) :
def wrapper():
x = func()
print("이 함수의 결과는 :, sum(x))
return wrapper
@special
def deco1():
return [10, 20, 30]
@special
def deco2():
return [20, 30, 40]
deco1() # 이 함수의 결과는 : 60
deco2() # 이 함수의 결과는 : 90
from flask import Flask # Flask라는 핵심 객체를 import
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
@app.route('/chicken')
def chicken():
return '치킨...'
@app.route('/first')
def first():
return 'first_page'
if __name__ == '__main__':
app.run(debug=True)
💡 return에 html 태그들을 안써주는 이유는 웹은 서버에게 정보를 받으면 HTML/CSS/JS 코드를 웹에 그려낸다.
<!-- templates/sample.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
{% for data in datas %} <!-- 주의: {% %} 중괄호와 %는 꼭 붙여 쓴다!! -->
<p> {{ data }}</p>
{% endfor %}
</body>
</html>
# main.py
from flask import Flask, render_template # render_template import
app = Flask(__name__)
@app.route('/')
def home():
return render_template("sample.html", datas=arr) # dtaas=arr로 html 연결.
if __name__ == '__main__':
app.run(debug=True)

<!-- calculator.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>{{method}} : {{value}}</p>
</body>
</html>
# main.py
from flask import Flask, render_template # Flask라는 핵심 객체를 import
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
@app.route('/add/<int:a>/<int:b>')
def add(a, b):
return render_template("calculator.html", method="더하기", value=a+b)
app.route('/sub/<int:a>/<int:b>')
def sub(a, b):
return render_template("calculator.html", method="빼기", value=a+b)
if __name__ == '__main__':
app.run(debug=True)

# main.py
from flask import Flask, render_template
import sqlite3 as sql
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
@app.route('/read')
def read():
with sql.connect('rabbit.db') as con: # con은 연결 정보(성공적으로 연결되었다.)
cur = con.cursor() # 쿼리 처리는 cur이 해준다.
cur.execute('SELECT * FROM rabbitUser')
result = cur.fetchall() # 결과물(검색연산)을 한번에 보낸다.
print(result) # console로 출력된다.
return "SQL읽기" # return을 안하면 에러나기때문에 아무값이나 넣어준다.
if __name__ == '__main__':
app.run(debug=True)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!-- action의 url_for는 flask의 함수를 받아서 도메인을 자동으로 생성해준다. -->
<form action="{{ url_for('adduser') }}" method="form">
<h2>회원가입</h2>
<p>ID<br />
<input type="text" name="id"/>
</p>
<p>Password<br/>
<input type="password" name="password"
</p>
<p>Name<br/>
<input type="text" name="name"/>
</p>
<p>Telephone<br/>
<input type="tel" name="telephone"/>
</p>
<p>
<input type="submit" />
</p>
</form>
</body>
</html>
from flask import Flask, render_template, request # Flask라는 핵심 객체를 import
import sqlite3 as sql
app = Flask(__name__)
@app.route('/')
def home():
return 'Hello, World!'
@app.route('/register')
def register_form():
return render_template("register.html")
@app.route('/join', methods=['POST'])
def adduser():
name = request.form["name"] # register.html에서 name을 통해 받아온다.
id = request.form["id"]
password = request.form["password"]
telephone = request.form["telephone"]
with sql.connect('rabbit.db') as con: # con은 연결 정보(성공적으로 연결되었다.)
cur = con.cursor() # 쿼리 처리는 cur이 해준다.
cur.execute('INSERT INTO rabbitUser(id, paswwrod, nickname, telephone) VALUES (?, ?, ?, ?)', (id, psssword, name, telephone))
cur.commit() # 실제 결과를 반영한다.
return "SQL쓰기"
if __name__ == '__main__':
app.run(debug=True)

