{"id":71,"date":"2024-12-04T04:20:39","date_gmt":"2024-12-04T04:20:39","guid":{"rendered":"http:\/\/211.230.203.47\/wordpress\/?p=71"},"modified":"2024-12-04T04:20:39","modified_gmt":"2024-12-04T04:20:39","slug":"%ed%8c%8c%ec%9d%b4%ec%8d%ac-flask-%ec%84%a4%eb%aa%85%ec%84%9c","status":"publish","type":"post","link":"https:\/\/www.soon7shop.kr\/wordpress\/?p=71","title":{"rendered":"\ud30c\uc774\uc36c Flask \uc124\uba85\uc11c"},"content":{"rendered":"<article class=\"w-full scroll-mb-[var(--thread-trailing-height,150px)] text-token-text-primary focus-visible:outline-2 focus-visible:outline-offset-[-4px]\" dir=\"auto\" data-testid=\"conversation-turn-9\" data-scroll-anchor=\"false\">\n<div class=\"m-auto text-base py-[18px] px-3 md:px-4 w-full md:px-5 lg:px-4 xl:px-5\">\n<div class=\"mx-auto flex flex-1 gap-4 text-base md:gap-5 lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]\">\n<div class=\"group\/conversation-turn relative flex w-full min-w-0 flex-col agent-turn\">\n<div class=\"flex-col gap-1 md:gap-3\">\n<div class=\"flex max-w-full flex-col flex-grow\">\n<div class=\"min-h-8 text-message flex w-full flex-col items-end gap-2 whitespace-normal break-words [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"362198e6-376f-43c6-996b-f50c0541b8be\" data-message-model-slug=\"gpt-4o\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden first:pt-[3px]\">\n<div class=\"markdown prose w-full break-words dark:prose-invert light\">\n<p>Flask\ub294 Python\uc73c\ub85c \uc791\uc131\ub41c \uac00\ubccd\uace0 \uc720\uc5f0\ud55c \uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\ub85c, \ub2e8\uc21c\ud55c \uc6f9 \uc0ac\uc774\ud2b8\uc5d0\uc11c\ubd80\ud130 \ubcf5\uc7a1\ud55c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uae4c\uc9c0 \uc190\uc27d\uac8c \uad6c\ucd95\ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc90d\ub2c8\ub2e4. Flask\ub294 \ucd5c\uc18c\ud55c\uc758 \ucf54\ub4dc\ub85c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub294 <strong>\ub9c8\uc774\ud06c\ub85c \ud504\ub808\uc784\uc6cc\ud06c<\/strong>\ub85c, \ub2e4\uc74c\uacfc \uac19\uc740 \ud2b9\uc9d5\uc744 \uac00\uc9d1\ub2c8\ub2e4.<\/p>\n<ul>\n<li><strong>\uac04\uacb0\uc131<\/strong>: \ubcf5\uc7a1\ud55c \uc124\uc815\uc774\ub098 \ub300\uaddc\ubaa8 \uad6c\uc870 \uc5c6\uc774 \uac04\ub2e8\ud55c \ucf54\ub4dc\ub85c \uc11c\ubc84\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>\ud655\uc7a5\uc131<\/strong>: \ud544\uc694\ud55c \uae30\ub2a5\ub9cc \ud655\uc7a5\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<li><strong>Jinja2 \ud15c\ud50c\ub9bf \uc5d4\uc9c4<\/strong>: HTML \ud15c\ud50c\ub9bf\uc744 \uc27d\uac8c \uad00\ub9ac\ud558\uace0 \ub370\uc774\ud130\uc640\uc758 \uc5f0\ub3d9\uc744 \ud3b8\ub9ac\ud558\uac8c \ud574\uc8fc\ub294 \ud15c\ud50c\ub9bf \uc5d4\uc9c4\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h3>Flask \uc124\uce58<\/h3>\n<p>Flask\ub294 Python \ud328\ud0a4\uc9c0 \uad00\ub9ac\uc790\uc778 pip\ub97c \ud1b5\ud574 \uc124\uce58\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">bash<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">pip install Flask<br \/>\n<\/code><\/div>\n<\/div>\n<h3>\uae30\ubcf8 Flask \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc791\uc131<\/h3>\n<p>\ub2e4\uc74c\uc740 \uac00\uc7a5 \uac04\ub2e8\ud55c Flask \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc608\uc81c\uc785\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>from flask import Flask<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>app = Flask(__name__)<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>@app.route(&#8220;\/&#8221;)<br \/>\ndef hello():<br \/>\nreturn &#8220;Hello, World!&#8221;<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>if __name__ == &#8220;__main__&#8221;:<br \/>\napp.run(debug=True)<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><br \/>\n<\/code><\/div>\n<\/div>\n<h4>\uc8fc\uc694 \uc124\uba85<\/h4>\n<ul>\n<li><strong>Flask \uac1d\uccb4 \uc0dd\uc131<\/strong>: <code>app = Flask(__name__)<\/code>\ub294 Flask \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1d\uccb4\ub97c \ub9cc\ub4ed\ub2c8\ub2e4.<\/li>\n<li><strong>\ub77c\uc6b0\ud2b8 \uc124\uc815<\/strong>: <code>@app.route(\"\/\")<\/code>\ub294 URL \uacbd\ub85c\ub97c \uc9c0\uc815\ud558\uc5ec \ud2b9\uc815 \uacbd\ub85c\ub85c \ub4e4\uc5b4\uc628 \uc694\uccad\uc5d0 \ub300\ud574 \ud568\uc218\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/li>\n<li><strong>\uc11c\ubc84 \uc2e4\ud589<\/strong>: <code>app.run()<\/code>\uc744 \ud1b5\ud574 Flask \uc11c\ubc84\ub97c \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h3>Flask \uc8fc\uc694 \uae30\ub2a5<\/h3>\n<h4>1. \ub77c\uc6b0\ud305<\/h4>\n<p>\ub77c\uc6b0\ud305\uc740 URL\uacfc \ud568\uc218\ub97c \uc5f0\uacb0\ud558\ub294 \uac83\uc73c\ub85c, \ub2e4\uc591\ud55c URL \uacbd\ub85c\uc5d0 \ub530\ub77c \uc11c\ub85c \ub2e4\ub978 \ud398\uc774\uc9c0\ub098 \ub370\uc774\ud130\ub97c \ubcf4\uc5ec\uc904 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\"><\/div>\n<p>@app.route(&#8220;\/hello&#8221;)<br \/>\ndef hello():<br \/>\nreturn &#8220;Hello, Flask!&#8221;<\/p>\n<p>@app.route(&#8220;\/user\/&lt;username&gt;&#8221;)<br \/>\ndef show_user_profile(username):<br \/>\nreturn f&#8221;User: {username}&#8221;<\/p>\n<h4>2. \ud15c\ud50c\ub9bf \ub80c\ub354\ub9c1<\/h4>\n<p>Flask\ub294 Jinja2 \ud15c\ud50c\ub9bf \uc5d4\uc9c4\uc744 \uc0ac\uc6a9\ud558\uc5ec HTML \ud15c\ud50c\ub9bf\uc5d0 \ub3d9\uc801\uc73c\ub85c \ub370\uc774\ud130\ub97c \uc804\ub2ec\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<p><strong>\ud15c\ud50c\ub9bf \ud30c\uc77c<\/strong>\uc744 <code>templates\/<\/code> \ud3f4\ub354\uc5d0 \uc791\uc131\ud569\ub2c8\ub2e4.<\/p>\n<ul>\n<li><code>templates\/index.html<\/code> \uc608\uc81c:\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-html\">&lt;!DOCTYPE html&gt;<br \/>\n&lt;html lang=\"en\"&gt;<br \/>\n&lt;head&gt;<br \/>\n&lt;meta charset=\"UTF-8\"&gt;<br \/>\n&lt;title&gt;Flask App&lt;\/title&gt;<br \/>\n&lt;\/head&gt;<br \/>\n&lt;body&gt;<br \/>\n&lt;h1&gt;Hello, {{ name }}!&lt;\/h1&gt;<br \/>\n&lt;\/body&gt;<br \/>\n&lt;\/html&gt;<br \/>\n<\/code><\/div>\n<\/div>\n<\/li>\n<\/ul>\n<p><strong>Flask\uc5d0\uc11c \ud15c\ud50c\ub9bf \ub80c\ub354\ub9c1<\/strong>:<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\"><\/div>\n<p>from flask import render_template<\/p>\n<p>@app.route(&#8220;\/greet\/&lt;name&gt;&#8221;)<br \/>\ndef greet(name):<br \/>\nreturn render_template(&#8220;index.html&#8221;, name=name)<\/p>\n<p><code>render_template()<\/code> \ud568\uc218\ub294 <code>templates\/<\/code> \ud3f4\ub354 \ub0b4\uc758 <code>index.html<\/code>\uc744 \ucc3e\uc544 \ub80c\ub354\ub9c1\ud558\uba70, <code>name<\/code> \ubcc0\uc218\ub97c \ud15c\ud50c\ub9bf\uc73c\ub85c \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/p>\n<h4>3.\uc694\uccad \ucc98\ub9ac<\/h4>\n<p>Flask\ub294 GET \ubc0f POST \uc694\uccad\uc744 \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\"><\/div>\n<ul>\n<li>from flask import request\n<p>@app.route(&#8220;\/submit&#8221;, methods=[&#8220;GET&#8221;, &#8220;POST&#8221;])<br \/>\ndef submit():<br \/>\nif request.method == &#8220;POST&#8221;:<br \/>\nname = request.form[&#8220;name&#8221;]\nreturn f&#8221;Hello, {name}!&#8221;<br \/>\nreturn &#8221;&#8217;<br \/>\n&lt;form method=&#8221;post&#8221;&gt;<br \/>\nName: &lt;input type=&#8221;text&#8221; name=&#8221;name&#8221;&gt;<br \/>\n&lt;input type=&#8221;submit&#8221; value=&#8221;Submit&#8221;&gt;<br \/>\n&lt;\/form&gt;<\/li>\n<li><code>request<\/code> \uac1d\uccb4\ub97c \ud1b5\ud574 POST \ub370\uc774\ud130\uc5d0 \uc811\uadfc\ud560 \uc218 \uc788\uc73c\uba70, \uc0ac\uc6a9\uc790\uac00 \uc81c\ucd9c\ud55c \ub370\uc774\ud130\ub97c \uc11c\ubc84\uc5d0\uc11c \ucc98\ub9ac\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br \/>\n&#8221;&#8217;<\/li>\n<\/ul>\n<h4>4. \ub9ac\ub2e4\uc774\ub809\ud2b8 \ubc0f URL \uc0dd\uc131<\/h4>\n<p><code>redirect()<\/code>\uc640 <code>url_for()<\/code> \ud568\uc218\ub97c \uc0ac\uc6a9\ud558\uba74 URL\uc744 \uc0dd\uc131\ud558\uace0 \ub9ac\ub2e4\uc774\ub809\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>from flask import redirect, url_for<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>@app.route(&#8220;\/&#8221;)<br \/>\ndef index():<br \/>\nreturn redirect(url_for(&#8220;hello&#8221;))<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>@app.route(&#8220;\/hello&#8221;)<br \/>\ndef hello():<br \/>\nreturn &#8220;Hello, Flask!&#8221;<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><br \/>\n<\/code><\/div>\n<\/div>\n<ul>\n<li><code>url_for(\"hello\")<\/code>\ub294 <code>hello<\/code> \ud568\uc218\uac00 \ub9e4\ud551\ub41c URL\ub85c \uc774\ub3d9\ud558\uac8c \ud569\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h4>5. Flask\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\ub3d9<\/h4>\n<p>Flask\ub294 SQLAlchemy\uc640 \uac19\uc740 ORM(Object Relational Mapping) \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc9c0\uc6d0\ud558\uc5ec \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc5f0\ub3d9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608\ub97c \ub4e4\uc5b4, SQLite\uc640 \uc5f0\ub3d9\ud558\ub294 \uac04\ub2e8\ud55c \ucf54\ub4dc \uc608\uc2dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>from flask_sqlalchemy import SQLAlchemy<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>app.config[&#8220;SQLALCHEMY_DATABASE_URI&#8221;] = &#8220;sqlite:\/\/\/test.db&#8221;<br \/>\ndb = SQLAlchemy(app)<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>class User(db.Model):<br \/>\nid = db.Column(db.Integer, primary_key=True)<br \/>\nname = db.Column(db.String(80), nullable=False)<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><code class=\"!whitespace-pre hljs language-python\"><\/code><\/code>@app.route(&#8220;\/add_user\/&lt;name&gt;&#8221;)<br \/>\ndef add_user(name):<br \/>\nuser = User(name=name)<br \/>\ndb.session.add(user)<br \/>\ndb.session.commit()<br \/>\nreturn f&#8221;Added user {name}.&#8221;<\/p>\n<p><code class=\"!whitespace-pre hljs language-python\"><br \/>\n<\/code><\/div>\n<\/div>\n<ul>\n<li><code>SQLAlchemy<\/code>\ub97c \uc0ac\uc6a9\ud558\uba74 Python \uac1d\uccb4\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ud14c\uc774\ube14\uc744 \ub9e4\ud551\ud558\uc5ec \ub370\uc774\ud130 \uad00\ub9ac\ub97c \uc27d\uac8c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n<\/ul>\n<h4>6. Flask \uc2e4\ud589<\/h4>\n<p>\uc77c\ubc18\uc801\uc73c\ub85c \ub2e4\uc74c \uba85\ub839\uc5b4\ub85c Flask \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">bash<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\">python app.py<br \/>\n<\/code><\/div>\n<\/div>\n<p>\ub610\ub294 <code>FLASK_APP<\/code> \ud658\uacbd \ubcc0\uc218\ub97c \uc124\uc815\ud558\uc5ec \uc2e4\ud589\ud560 \uc218\ub3c4 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<div class=\"contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary dark:bg-gray-950\">\n<div class=\"flex items-center text-token-text-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md h-9 bg-token-sidebar-surface-primary dark:bg-token-main-surface-secondary select-none\">bash<\/div>\n<div class=\"sticky top-9 md:top-[5.75rem]\">\n<div class=\"absolute bottom-0 right-2 flex h-9 items-center\">\n<div class=\"flex items-center rounded bg-token-sidebar-surface-primary px-2 font-sans text-xs text-token-text-secondary dark:bg-token-main-surface-secondary\"><\/div>\n<\/div>\n<\/div>\n<div class=\"overflow-y-auto p-4\" dir=\"ltr\"><code class=\"!whitespace-pre hljs language-bash\"><span class=\"hljs-built_in\">export<\/span> FLASK_APP=app.py<br \/>\nflask run<br \/>\n<\/code><\/div>\n<\/div>\n<p>\uc774 \uba85\ub839\uc5b4\ub85c \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud55c \ub4a4, <code>http:\/\/127.0.0.1:5000<\/code>\uc5d0\uc11c \uc811\uc18d\ud558\uc5ec \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ud14c\uc2a4\ud2b8\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"mb-2 flex gap-3 empty:hidden -ml-2\">\n<div class=\"items-center justify-start rounded-xl p-1 z-10 -mt-1 bg-token-main-surface-primary md:absolute flex\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<article class=\"w-full scroll-mb-[var(--thread-trailing-height,150px)] text-token-text-primary focus-visible:outline-2 focus-visible:outline-offset-[-4px]\" dir=\"auto\" data-testid=\"conversation-turn-10\" data-scroll-anchor=\"false\">\n<h5 class=\"sr-only\"><\/h5>\n<div class=\"m-auto text-base py-[18px] px-3 md:px-4 w-full md:px-5 lg:px-4 xl:px-5\">\n<div class=\"mx-auto flex flex-1 gap-4 text-base md:gap-5 lg:gap-6 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem]\">\n<div class=\"group\/conversation-turn relative flex w-full min-w-0 flex-col\">\n<div class=\"flex-col gap-1 md:gap-3\">\n<div class=\"flex max-w-full flex-col flex-grow\">\n<div class=\"min-h-8 text-message flex w-full flex-col items-end gap-2 whitespace-normal break-words [.text-message+&amp;]:mt-5\" dir=\"auto\" data-message-author-role=\"user\" data-message-id=\"aaa22a52-7fd8-4b3d-8c91-a1c3b8c144b7\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden items-end rtl:items-start\">\n<div class=\"relative max-w-[70%] rounded-3xl bg-token-message-surface px-5 py-2.5\">\n<div class=\"whitespace-pre-wrap\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n","protected":false},"excerpt":{"rendered":"<p>Flask\ub294 Python\uc73c\ub85c \uc791\uc131\ub41c \uac00\ubccd\uace0 \uc720\uc5f0\ud55c \uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\ub85c, \ub2e8\uc21c\ud55c \uc6f9 \uc0ac\uc774\ud2b8\uc5d0\uc11c\ubd80\ud130 \ubcf5\uc7a1\ud55c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uae4c\uc9c0 \uc190\uc27d\uac8c \uad6c\ucd95\ud560 \uc218 \uc788\ub3c4\ub85d \ud574\uc90d\ub2c8\ub2e4. Flask\ub294 \ucd5c\uc18c\ud55c\uc758 \ucf54\ub4dc\ub85c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub294 \ub9c8\uc774\ud06c\ub85c \ud504\ub808\uc784\uc6cc\ud06c\ub85c, \ub2e4\uc74c\uacfc \uac19\uc740 \ud2b9\uc9d5\uc744 \uac00\uc9d1\ub2c8\ub2e4. \uac04\uacb0\uc131: \ubcf5\uc7a1\ud55c \uc124\uc815\uc774\ub098 \ub300\uaddc\ubaa8 \uad6c\uc870 \uc5c6\uc774 \uac04\ub2e8\ud55c \ucf54\ub4dc\ub85c \uc11c\ubc84\ub97c \uc2dc\uc791\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ud655\uc7a5\uc131: \ud544\uc694\ud55c \uae30\ub2a5\ub9cc \ud655\uc7a5\ud574\uc11c \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. Jinja2 \ud15c\ud50c\ub9bf \uc5d4\uc9c4: HTML &hellip; <a href=\"https:\/\/www.soon7shop.kr\/wordpress\/?p=71\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;\ud30c\uc774\uc36c Flask \uc124\uba85\uc11c&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-71","post","type-post","status-publish","format-standard","hentry","category-6"],"_links":{"self":[{"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=71"}],"version-history":[{"count":1,"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":72,"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions\/72"}],"wp:attachment":[{"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.soon7shop.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}