Tinkerbell Glitter
[250107] ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ(Trailing Slash) ๋ž€?
AI ๐Ÿค–/Django โ›“๏ธ
ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ๋ž€? โˆ•1.ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ ์ •์˜URL ์˜ ๋์— ์˜ค๋Š” ์Šฌ๋ž˜์‹œ(`/`)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, Django ์—์„œ URL ์„ ์„ค๊ณ„ํ•  ๋•Œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•œ๋‹คURL ์ด `/` ๋กœ ๋๋‚˜๋ฉด ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค์˜ˆ: `https://example.com/about/`URL ์ด `/` ๋กœ ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ๊ฐ€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค์˜ˆ: `https://example.com/about`2. Django ์˜ ๊ธฐ๋ณธ ๋™์ž‘Django ๋Š” ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ๊ฐ€ ์žˆ๋Š” URL ์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค`APPEND_SLASH=True`(๊ธฐ๋ณธ๊ฐ’): ํŠธ๋ ˆ์ผ๋ง ์Šฌ๋ž˜์‹œ๊ฐ€ ์—†๋Š” ์š”์ฒญ์ด ์˜ค๋ฉด Django ๊ฐ€ ์ž๋™์œผ๋กœ ์Šฌ๋ž˜์‹œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•œ๋‹ค์˜ˆ์ œ# urls.pyfrom django.urls import pathfrom . import ..
[250106] ์žฌ๊ท€ํ•จ์ˆ˜ ์ •๋ฆฌ
AI ๐Ÿค–/Python ๐Ÿ’ป
์žฌ๊ท€ํ•จ์ˆ˜๋ž€?1. ์žฌ๊ท€ํ•จ์ˆ˜ ์ •์˜์žฌ๊ท€ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์ž์‹  ์Šค์Šค๋กœ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค์ฃผ๋กœ ํŠน์ • ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค์„ ์ž…ํ›„์ถœ์ž„2. ์žฌ๊ท€ํ•จ์ˆ˜์˜ ๊ตฌ์กฐ๊ธฐ์ € ์กฐ๊ฑด(Base Case)์žฌ๊ท€ ํ˜ธ์ถœ์„ ๋ฉˆ์ถ”๋Š” ์กฐ๊ฑด์žฌ๊ท€ ํ˜ธ์ถœ(Recursive Call)ํ•จ์ˆ˜๊ฐ€ ์Šค์Šค๋กœ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ถ€๋ถ„3. ๊ธฐ๋ณธ ์˜ˆ์ œํŒฉํ† ๋ฆฌ์–ผ ๊ณ„์‚ฐ$$n! = n × (n-1) × (n-2) × โˆ™โˆ™โˆ™ × 1$$def factorial(n): if n == 1: # ๊ธฐ์ € ์กฐ๊ฑด return 1 return n * factorial(n - 1) # ์žฌ๊ท€ ํ˜ธ์ถœ# ์‚ฌ์šฉ ์˜ˆ์‹œprint(factorial(5)) # ์ถœ๋ ฅ: 120 (5 × 4 × 3 × 2 × 1)4. ์žฌ๊ท€ ํ˜ธ์ถœ์˜ ๊ณผ์ •`factorial(5)` ์˜..
[250106] HTML ํผ(Form), ์ฟผ๋ฆฌ์ŠคํŠธ๋ง(Query String), ๊ทธ๋ฆฌ๊ณ  Get
AI ๐Ÿค–/Django โ›“๏ธ
HTML ํผ(HTML Form) ์ด๋ž€? ๐Ÿซง1. HTML ํผ ์ •์˜์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์›น ํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ด๋‹คdjango ์—์„œ ํผ์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์˜ ํ•ต์‹ฌ ์—ญํ• ์„ ํ•จ2. ๊ธฐ๋ณธ ๊ตฌ์กฐ ๊ฒ€์ƒ‰์ฃผ์š” ์†์„ฑ`method` : ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌํ•˜๋Š” HTTP ๋ฉ”์„œ๋“œ(`GET` ๋˜๋Š” `POST`)`GET` : URL์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ ํฌํ•จํ•˜์—ฌ ์ „๋‹ฌํ•จ`POST` : ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ ๋ณธ๋ฌธ(body)์— ํฌํ•จํ•˜์—ฌ ์ „๋‹ฌํ•œ๋‹ค`action` : ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ URL(๊ธฐ๋ณธ ๊ฐ’์€ ํ˜„์žฌ ํŽ˜์ด์ง€์ž„)Django ์™€์˜ ์—ฐ๋™HTML ํ…œํ”Œ๋ฆฟ์œ„์™€ ๊ฐ™์€ ํผ์„ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค๋ทฐ ์ฒ˜๋ฆฌ(views.py)def search(request): query..
[250106] count() ์™€ Counter() ์˜ ์ฐจ์ด์ 
AI ๐Ÿค–/Python ๐Ÿ’ป
count() ๋ž€? ๐Ÿงฎ1. count() ์ •์˜python ์˜ ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ์‹œํ€€์Šค ๊ฐ์ฒด์—์„œ ํŠน์ • ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค๋‹จ์ˆœํžˆ ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ ๋ช‡ ๋ฒˆ ๋“ฑ์žฅํ–ˆ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ ์ ˆํ•œ์ง€:ํŠน์ • ๊ฐ’ ํ•˜๋‚˜๋งŒ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ์˜ˆ:๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • ์š”์†Œ์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ ์ž ํ•  ๋•Œ2. count() ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๊ตฌ๋ฌธsequence.count(value)์˜ˆ์ œ# ๋ฆฌ์ŠคํŠธ์—์„œ count ์‚ฌ์šฉnumbers = [1, 2, 2, 3, 3, 3]print(numbers.count(2)) # ์ถœ๋ ฅ: 2# ๋ฌธ์ž์—ด์—์„œ count ์‚ฌ์šฉtext = "hello world"print(text.count("l")) # ์ถœ๋ ฅ: 3ํŠน์ง•ํŠน์ • ๊ฐ’ ํ•˜๋‚˜๋งŒ์„ ์นด์šดํŠธ ํ•  ์ˆ˜ ์žˆ๋‹คO(n) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค(๋ฆฌ..
[250103] Django Template Language ๋ž€?
AI ๐Ÿค–/Django โ›“๏ธ
Django Template Language ๋ž€? ๐Ÿ…ณ๐Ÿ†ƒ๐Ÿ…ป1. Django Template Language ์ •์˜Django Template Language(DTL)๋Š” Django์—์„œ HTML์„ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์ž…๋‹ˆ๋‹คDTL์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฑ์—”๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ์–ด์š”2. ๊ธฐ๋ณธ ๋ฌธ๋ฒ•1. ๋ณ€์ˆ˜ ์ถœ๋ ฅํ…œํ”Œ๋ฆฟ์—์„œ Python ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ ค๋ฉด `{{ variable_name }}` ์„ ์‚ฌ์šฉํ•ด์ค๋‹ˆ๋‹ค์•ˆ๋…•ํ•˜์„ธ์š”, {{ name }}๋‹˜!์ „๋‹ฌ๋œ ๋ณ€์ˆ˜ ์˜ˆ์ œ:return render(request, 'index.html', {'name': 'Alice'})๊ฒฐ๊ณผ:์•ˆ๋…•ํ•˜์„ธ์š”, Alice๋‹˜!2. ํ•„ํ„ฐ (Filters)๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค๊ตฌ๋ฌธ: `{{..
[250103] ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ž€?
AI ๐Ÿค–/Python ๐Ÿ’ป
๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋ž€? โœจ1. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ •์˜๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋Š” ๊ธฐ์กด์˜ ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ด์ฌ์˜ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์ด๋‹ค๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜(Higher-Order Function)์˜ ์ผ์ข…์ž„์ฃผ๋กœ ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์˜ ์ „ํ›„์— ์‹คํ–‰๋  ๋กœ์ง์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค2. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๊ธฐ๋ณธ ํ•จ์ˆ˜def my_function(): print("Hello, World!")๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜ ์ •์˜def my_decorator(func): def wrapper(): print("Before the function call") func() # ์›๋ž˜ ํ•จ์ˆ˜ ์‹คํ–‰ print("After the function call") return..