Day 055

AWESOMee·2022년 3월 31일
0

Udemy Python Bootcamp

목록 보기
55/64
post-thumbnail

Udemy Python Bootcamp Day 055

HTML & URL Parsing in Flask

Working Flask URL Paths and the Flask Debugger

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello, World!'

# Different routes using the app.route decorator
@app.route("/bye")
def bye():
    return "Bye!"

# Creating variables paths and converting the path to a specified data type
@app.route("/username/<name>/<int:number>")
def greet(name, number):
    return f"Hello there {name}, you are {number} years old!"


if __name__ == "__main__":
	# Run the app in debug mode to auto-reload
    app.run(debug=True)


debug=True를 이용해서 * Debug mode: on으로 만들어서 파일 수정후 저장하여 page frresh하면 수정된 사항 바로 확인할 수 있음.

Rendering HTML Elements with Flask

Flask actually accepts HTML in the return.

@app.route('/')
def hello_world():
    return '<h1 style="text-align: center">Hello, World!</h1>' \
           '<p>This is a paragragh.</p>' \
           '<img src="https://nationaltoday.com/wp-content/uploads/2020/07/Kitten-640x514.jpg" width=200px>'

gif도 똑같이 적용할 수 있음

def make_bold(function):
    def wrapped_function():
        return "<b>" + function() + "</b>"
    return wrapped_function


def make_italic(function):
    def wrapped_function():
        return "<em>" + function() + "</em>"
    return wrapped_function


def make_underline(function):
    def wrapped_function():
        return "<u>" + function() + "</u>"
    return wrapped_function


@app.route("/bye")
@make_bold
@make_italic
@make_underline
def bye():
    return "Bye!"


하씨,,, 에러나서 한참 찾았는데 이것저것 시도해보다가 다시 하니까 됨,,,

Advanced Decorators with *args and **kwargs

## Advanced Python Decorator Functions

class User:
    def __init__(self, name):
        self.name = name
        self.is_logged_in = False

def is_authenticated_decorator(function):
    def wrapper(*args, **kwargs):
        if args[0].is_logged_in == True:
            function(args[0])
    return wrapper

@is_authenticated_decorator
def create_blog_post(user):
    print(f"This is {user.name}'s new blog post.")

new_user = User("angela")
new_user.is_logged_in = True
create_blog_post(new_user)

args[0] is going to take that first position input and then see if it is logged in property is equal to true.

Exercise

# Create the logging_decorator() function 👇
def logging_decorator(function):
  def wrapper(*args):
    print(f"You called {function.__name__}{args}")
    print(f"It returned: {function(args[0], args[1], args[2])}")
  return wrapper


# Use the decorator 👇
@logging_decorator
def a_function(num1, num2, num3):
  result = num1 * num2 * num3
  return result

a_function(1, 2, 3)

얼추 비슷하게 했음..

여기까지는 만들었는데

print(f"You called {function.__name__}{args}")에서 {args}라고 붙일 생각은 못하고 () 로 넣으려다 보니까 계속 에러났었음

def a_function에서 입력받는 값은 int이기 때문에 형변환 필요없음

The Higher Lower Game

from flask import Flask
import random

random_number = random.randint(0, 9)

app = Flask(__name__)


@app.route('/')
def home():
    return '<h1>Guess a number between 0 and 9</h1>' \
           '<img src="https://media.giphy.com/media/3o7aCSPqXE5C6T8tBC/giphy.gif">'


@app.route('/<int:number>')
def check_number(number):
    if number < random_number:
        return '<h1 style="color=red;">Too low, try again!</h1>' \
               '<img src="https://media.giphy.com/media/jD4DwBtqPXRXa/giphy.gif">'
    elif number > random_number:
        return '<h1 style="color=purple;">Too high, try again!</h1>' \
               '<img src="https://media.giphy.com/media/3o6ZtaO9BZHcOjmErm/giphy.gif">'
    else:
        return '<h1 style="color=green;">You found me!</h1>' \
               '<img src="https://media.giphy.com/media/4T7e4DmcrP9du/giphy.gif">'


if __name__ == "__main__":
    app.run(debug=True)

나 진짜 이거 스스로 적고 테스트하는데 또 오류나서 기다렸다가 다시 했는데
403에러는 안뜨는데 number입력하면 화면이 안뜨는겨,,,
그래서 솔루션을 봤는데
randint(0, 9)choice(range(0, 9))로 적은거 말고는
내꺼랑 똑같아..!!!!!!
근데 왜 안될까,,,,
진짜 미쳤나봐....
"color=green;"에서 마지막 "빼먹었음.... 그리고 corret page에서 src인데 scr라고 씀... 진짜..... 노답이다
이제 잘됩니다.....





profile
개발을 배우는 듯 하면서도

0개의 댓글