#flask1.0
Explore tagged Tumblr posts
sinwoobang ยท 7 years ago
Text
Flask 1.0 Changelog ์šฐ๋ฆฌ๋ง ๋ฒˆ์—ญ
Tumblr media
๋“œ๋””์–ด Flask 1.0์ด ์ถœ์‹œ๋˜์—ˆ๋„ค์š” :) http://flask.pocoo.org/docs/1.0/changelog/ ๋ฅผ ์šฐ๋ฆฌ๋ง๋กœ ๋ฒˆ์—ญํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์˜์—ญ, ์˜ค์—ญ ๋งŽ์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฐธ๊ณ ๋กœ๋งŒ ๋ด์ฃผ์„ธ์š”. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
Flask 1.0 Changelog
Python 2.6๊ณผ 3.3 ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์˜์กด์„ฑ์ด ์—…๋ฐ์ดํŠธ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (Werkzeug >= 0.14, Jinja >= 2.10, itsdangersou >= 0.24, Click >= 5.1)
๋ช…๋ น์ค„์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ app.run์„ ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฒ„๊น…ํ•˜๊ธฐ์— ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋™์ž‘์„ ํ”ผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
JSONIFY_PRETTYPRINT_REGULAR ๊ธฐ๋ณธ๊ฐ’์„ False๋กœ ๋ฐ”๊พธ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๊ธฐ๋ณธ ์„ค์ •์—์„œ๋Š” ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์ผ๋–„๋งŒ jsonify() ๊ฒฐ๊ณผ๊ฐ’์ด prettify์ž…๋‹ˆ๋‹ค.
Flask.init์ด host_matching ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์„ url_map์— ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
Flask.init์ด static_host ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. static route๋ฅผ ์ •์˜ํ•  ๋•Œ, ์ด ๊ฐ’์„ host ์ธ์ž๋กœ ๋„˜๊น๋‹ˆ๋‹ค.
send_file()์ด attachement_filename์— ์œ ๋‹ˆ์ฝ”๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด url_for()์˜ _scheme ๊ฐ’์„ handle_url_build_error()๋กœ ๋„˜๊น๋‹ˆ๋‹ค.
add_url_rule()์ด provide_automatic_options ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ OPTIONS method ์ถ”๊ฐ€๋ฅผ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์”๋‹ˆ๋‹ค.
MethodView ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์ด ๋ถ€๋ชจ ํด๋ž˜์Šค๋“ค์˜ method handlers๋“ค์„ ์ƒ์† ๋ฐ›์Šต๋‹ˆ๋‹ค.
์š”์ฒญ ์ดˆ๊ธฐ์— ์„ธ์…˜์„ ์˜คํ”ˆํ•˜๋Š” ๋™์•ˆ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜๋“ค์„ ์•ฑ์˜ ์˜ค๋ฅ˜ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
Blueprint์— json_encoder, json_decoder ์†์„ฑ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ๋“ค์€ ์•ฑ์˜ encoder์™€ decoder๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•ฉ๋‹ˆ๋‹ค.
Flask.make_response()๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์€ Response Type๋“ค์— ๋Œ€ํ•ด ValueError ๋Œ€์‹  TypeError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์™œ ํ•ด๋‹น Type์ด ์™œ ์œ ํšจํ•˜์ง€ ์•Š์€์ง€ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
CLI์— 'routes' ๋ช…๋ น์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ช…๋ น์€ ์•ฑ์— ๋“ฑ๋ก๋œ ๋ผ์šฐํŒ…๋“ค์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
์„ธ์…˜ ์ฟ ํ‚ค ๋„๋ฉ”์ธ์ด bare hostname(ex. localhost)์ด๊ฑฐ๋‚˜ IP๋ฉด ๊ฒฝ๊ณ ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. Chrome๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ •ํ™•ํ•œ ์„ธ์…˜ ์ฟ ํ‚ค ๋„๋ฉ”์ธ์œผ๋กœ IP ์ฃผ์†Œ๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
SERVER_NAME์—์„œ SESSION_COOKIE_DOMAIN์ด ๊ฐ์ง€๋˜๋ฉด, SESSION_COOKIE_DOMAIN์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
์•ฑ factory ํ•จ์ˆ˜ create_app ํ˜น์€ make_app์„ ์ž๋™์œผ๋กœ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.
flask ๋ช…๋ น์œผ๋กœ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด script_info ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ Factory ํ•จ์ˆ˜๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ์— ๋‹จ์ผ ์ธ์ž๋‚˜ script_info๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ธ์ž๋ฅผ ๋ฐ›์œผ๋ฉด, ScriptInfo ๊ฐ์ฒด๊ฐ€ ๋„˜์–ด๊ฐ‘๋‹ˆ๋‹ค.
์•ฑ factory๋ฅผ FLASK_APP๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•„์š”ํ•˜๋ฉด ์ธ์ž๋„ ๊ฐ™์ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ex. FLASK_APP=myproject.app:create_app('dev').
FLASK_APP์€ ๋กœ์ปฌ ํŒจํ‚ค์ง€๋„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ํŒจํ‚ค์ง€๊ฐ€ ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ์–ด๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  pip install -e๋ฅผ ์„ค์ •ํ•˜๋Š”๊ฒŒ ์„ ํ˜ธ๋˜๊ธด ํ•ฉ๋‹ˆ๋‹ค.
View ํด๋ž˜์Šค ์†์„ฑ provide_automatic_options๊ฐ€ add_url_rule()์—์„œ ๊ฐ์ง€๋˜์–ด, as_view()์— ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
์˜ค๋ฅ˜ ํ•ธ๋“ค ์‹œ์— 'blueprint, code', 'app, code', 'blueprint', 'exception', 'app exception'์— ๋“ฑ๋ก๋œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์š”์ฒญ ์ค‘์— ์„ธ์…˜์— ์ ‘๊ทผํ•  ๊ฒฝ์šฐ ์‘๋‹ต Vary ํ—ค๋”์— Cookie๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. (๋‹จ, ์„ธ์…˜์ด ์‚ญ์ œ๋˜์ง€ ์•Š์•˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)
test_request_context()๊ฐ€ subdomain, url_scheme ์ธ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. base URL์„ ๋งŒ๋“ค ๋–„ ์ด ๊ฐ’๋“ค์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
APPLICATION_ROOT ๊ธฐ๋ณธ๊ฐ’์„ '/'๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ์›๋ž˜๋ถ€ํ„ฐ ๊ฐ’์ด None์ด๋ฉด '/'๋กœ ์ž‘๋™ํ•˜๊ธด ํ–ˆ์Šต๋‹ˆ๋‹ค.
TRAP_BAD_REQUEST_ERRORS๊ฐ€ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ผœ์ง‘๋‹ˆ๋‹ค. BadRequestKeyError ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์ผ๋ฐ˜ ๋ชจ๋“œ์—์„œ๋Š” ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜์˜ค์ง€๋งŒ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ์—์„œ๋Š” ๋ฉ”์‹œ์ง€์— ์˜ค๋ฅ˜ ํ‚ค๊ฐ’์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค.
TaggedJSONSerializer์— ์ƒˆ๋กœ์šด ํƒœ๊ทธ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์„ธ์…˜ ์ฟ ํ‚ค์— ๋‹ค๋ฅธ ํ˜•์‹ ์ €์žฅ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ์š”์ฒญ์ด ์•„์ง context stack์— ๋“ค์–ด๊ฐ€์ง€ ์•Š์•˜์„๋•Œ๋งŒ ์„ธ์…˜์„ ์—ฝ๋‹ˆ๋‹ค. stream_with_context() ์ œ๋„ค๋ ˆ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ทฐ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ์„ธ์…˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ ๋ฉ”์†Œ๋“œ์— 'json' keyword ์ธ์ž๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ฅผ JSON์œผ๋กœ ๋คํ”„ํ•˜๊ณ  ์ ์ ˆํ•œ Content type์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
์š”์ฒญ ๋ฐ ์‘๋‹ต ํด๋ž˜์Šค ๋ชจ๋‘์— ์ ์šฉ๋˜๋Š” Mixin์— JSON์ฒ˜๋ฆฌ๋ฅผ ์ถ”์ถœํ–ˆ์Šต๋‹ˆ๋‹ค. response์— is_json(), get_json() ๋ฉ”์†Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด JSON response ํ…Œ์ŠคํŠธ๊ฐ€ ๋” ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.
์˜ค๋ฅ˜ ํ•ธ๋“ค๋Ÿฌ ์บ์‹œ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ช‡๋ช‡์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์— ์ƒ์† ์œ„๊ณ„ ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค. MRO ํ†ต๊ณผ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด ๊ฐ ์˜ˆ์™ธ์— ๋Œ€ํ•ด ๋ช…์‹œ์ ์œผ๋กœ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ๋“ฑ๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
non-UTC datetime์˜ JSON ์ธ์ฝ”๋”ฉ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค.
ํ…œํ”Œ๋ฆฟ ์ž๋™ reloading์€ ์ด๋ฏธ jinja_env์— ์ ‘๊ทผํ–ˆ๋”๋ผ๋„ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์Œ deprecated ์ฝ”๋“œ๋“ค์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.
flask.ext - ํ™•์žฅ๋“ค์„ flask.ext namespace ๋ง๊ณ  ์ง์ ‘ import ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ex. import flask.ext.sqlalchemy -> import flask_sqlalchemy
Flask.init_jinja_globals - Flask.create_jinja_environment()๋ฅผ ํ™•์žฅํ•ด์„œ ์‚ฌ์šฉํ•˜์„ธ์š”.
Flask.error_handlers - Flask.error_handler_spec์œผ๋กœ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก์€ Flask.errorhandler()๋ฅผ ์“ฐ์„ธ์š”.
Flask.request_globals_class - Flask.app_ctx_globals_class๋ฅผ ์“ฐ์„ธ์š”.
Flask.static_path - Flask.static_url_path๋ฅผ ์“ฐ์„ธ์š”.
Request.module - Request.blueprint๋ฅผ ์“ฐ์„ธ์š”.
Request.json - ์ด์   deprecate ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.
EnvionBuilder ํ˜น์€ dict๋ฅผ test_client.open์— ๋„˜๊ธฐ๋Š” ๊ฑธ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
python-dotenv๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด, flask ๋ช…๋ น๊ณผ Flask.run()์€ .env, .flaskenv ํŒŒ์ผ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ ์ž…๋‹ˆ๋‹ค.
์ „์ฒด URL์„ ํ…Œ์ŠคํŠธ ํด๋ผ์ด์–ธํŠธ์— ๋„˜๊ธฐ๋ฉด, PREFERRED_URL_SCHEME ๋Œ€์‹ ์— URL์˜ ์Šคํ‚ด์ด ์“ฐ์ž…๋‹ˆ๋‹ค.
Flask.logger๊ฐ€ ๊ฐ„๋‹จํ•ด์กŒ์Šต๋‹ˆ๋‹ค. LOGGER_NAME๊ณผ LOGGER_HANDLER_POLICY ์„ค์ •์„ ์—†์•ด์Šต๋‹ˆ๋‹ค. ๋กœ๊ฑฐ ์ด๋ฆ„์€ ํ•ญ์ƒ flask.app์ž…๋‹ˆ๋‹ค. ย ๋ ˆ๋ฒจ์€ ์ฒซ๋ฒˆ์งธ ์ ‘๊ทผ ๋•Œ ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ๋งค๋ฒˆ Flask.debug๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Flask.debug์— ๋”ฐ๋ผ ํ˜•์‹์€ ํ•œ๊ฐœ๋งŒ ์“ฐ์ž…๋‹ˆ๋‹ค. ์•„๋ฌด ํ•ธ๋“ค๋Ÿฌ๋„ ์ œ๊ฑฐ๋˜์ง€ ์•Š๊ณ , ์–ด๋–ค ํ•ธ๋“ค๋Ÿฌ๋„ ์„ค์ •๋˜์–ด์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
Blueprint ๋ทฐ ํ•จ์ˆ˜๋Š” ์ (.)์„ ํฌํ•จํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.
์œ ํšจํ•˜์ง€ ์•Š์€ Range ํ—ค๋” ์š”์ฒญ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ValueError ๋ฒ„๊ทธ๋ฅผ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์œผ๋กœ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
silent=True๋กœ ์„ค์ •์„ ๊ฐ€์ ธ์˜ค๋ฉด ENOTDIR ์˜ค๋ฅ˜๋ฅผ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ ์„œ๋ฒ„์— HTTPS๋ฅผ ์“ฐ๊ณ  ์‹ถ์œผ๋ฉด --cert์™€ --key ์˜ต์…˜์„ flask run์— ๋„˜๊ธฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
์„ธ์…˜ ์ฟ ํ‚ค์— SameSite ์†์„ฑ์„ ์ œ์–ดํ•˜๋Š” ์šฉ๋„๋กœ SESSION_COOKIE_SAMESITE๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ์šฉ๋„๋กœ Flask CLI ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” Click runner๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก test_cli_runner()๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์„œ๋ธŒ๋„๋ฉ”์ธ ๋งค์นญ์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ๊บผ๋†“์•˜์Šต๋‹ˆ๋‹ค. SERVER_NAME ์„ค์ •์ด ์•”์‹œ์ ์œผ๋กœ ์ด๊ฒƒ์„ ์ผœ์ง„ ์•Š์Šต๋‹ˆ๋‹ค. subdomain_matching=True๋ฅผ Flask ์ƒ์„ฑ์ž์— ๋„˜๊น€์œผ๋กœ์จ ์ผค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์•ฑ์— blueprint๊ฐ€ ๋“ฑ๋ก๋  ๋•Œ blueprint url_prefix์—์„œ ๋งˆ์ง€๋ง‰ /(slash)๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค(stripped).
silent๊ฐ€ True๋ฉด Request.get_json() ํŒŒ์‹ฑ์— ์‹คํŒจํ–ˆ์„๋•Œ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Request.get_json()๋Š” ๋”์ด์ƒ ์ž„์˜ ์ธ์ฝ”๋”ฉ์„ ์ˆ˜์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์š”์ฒญ JSON์€ RFC 8259์— ๊ทผ๊ฑฐํ•œ UTF-8์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (UTF-16, UTF-32๋„ ์ž๋™ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.)
๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฌด์‹œํ–ˆ์„ ์ˆ˜ ์žˆ๋Š” ํฐ ์ฟ ํ‚ค์— ๋Œ€ํ•ด Werkzeug๊ฐ€ ๊ฒฝ๊ณ ํ•  ๋•Œ ์ด๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด MAX_COOKIE_SIZE์™€ Response.max_cookie_size๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ž‘์€ ์ฐฝ์—์„œ ๋ฌธ์„œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ theme์„ ์—…๋ฐ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
ํŠœํ† ๋ฆฌ์–ผ ๋ฌธ์„œ์™€ ์˜ˆ์‹œ ํ”„๋กœ์ ๏ฟฝ๏ฟฝ๋ฅผ ์žฌ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์œ ์ €๋“ค์ด ํ”ํžˆ ๊ฒช๋Š” ์–ด๋ ค์›€์„ ๋•๊ธฐ ์œ„ํ•ด ์ฒด๊ณ„ํ™”๋œ ์ ‘๊ทผ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
0 notes