์ค๋๋ ๊ณ ๋ช
์ด ์ฌ์ง์ผ๋ก ์์........... ์ค๋ ๋ญํ๋ค๊ณ ์ ๋ ๊ฒ ๊ธฐ์ ํด์๋... ๋ถ๋ฝ๋ค,,
์ง๋๋ฒ ํ๋์ ์ด์ด์ ์ค๋์ PhotoWeb์ ์์ฑํ๋ค. ๊ตฌํํ๋ ๊ธฐ๋ฅ์ ์ฐธ๊ณ ํด์ ํ๋ฒ ์ ๋ฆฌ๋ฅผ ํด๋ณด๋๋ก ํ๊ฒ ๋ค><
๋จผ์ Template
์ด๋ ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ๋ถ๋ถ์ผ๋ก ์น ํ์ด์ง์ ๊ณจ๊ฒฉ์ด๋ผ๊ณ ๋ ํ๋ค. ์ฆ HTML
๋ก ์์ฑ๋ ๋ถ๋ถ์ ๋งํ๋๋ฐ Django
์์์ ํ
ํ๋ฆฟ์ ์ผ๋ฐ์ ์ธ HTML
์์ฑ๊ณผ ๊ฑฐ์ ๋์ผํ๋ค.
HTML
์ด ํ์ด์ฌ ์ฝ๋๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ๋๊ฒจ๋ฐ์ ์์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ ๋๊ตฌ๋ฅผ ๋งํ๋ค.
HTML
์ Hyper Text Markup Language
๋ก ๋งํฌ์
์ธ์ด์ ์ํ๋๋ฐ ๋งํฌ์
์ธ์ด๋ ์ ์ ์ธ ์นํ์ด์ง๋ค. ๋ฐ๋ผ์ javascript
๋ฅผ ์ด์ฉํด ๋์ ์ธ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผํ๋๋ฐ django
์์๋ ์ด๋ฅผ ํ
ํ๋ฆฟ ํ๊ทธ๋ฅผ ์ด์ฉํด ๋ฐ๋ก๋ฐ๋ก ์์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋ค.
{}
๋ก ๊ฐ์ธ๋ ํํ๋ก for๋ฌธ
, if๋ฌธ
๊ฐ์ ํ์ด์ฌ์ ๊ธฐ๋ณธ ๊ตฌ๋ฌธ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
ํ
ํ๋ฆฟ๊ณผ ๋ชจ๋ธ ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ๋ค๋ฆฌ ์ญํ ์ ํ๋ค. ๋ชจ๋ธ์ ํตํด์ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ณ ํ
ํ๋ฆฟ์ผ๋ก๋ถํฐ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ํ ๋ค์ ํ
ํ๋ฆฟ์ ์ ๋ฌ์ ํ๋ ์ญํ ์ ํ๋ค.
์์๋ก ํ๋ก ํธ์๋์ ๋ฐฑ์๋๋ฅผ ๋ค์์๋ค.
1. ํ๋ก ํธ์๋๊ฐ ๋ฐฑ์๋์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
2. ๋ฐฑ์๋์์ ํ๋ก ํธ์๋๊ฐ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ๋ฝ์ ์ฒ๋ฆฌํ๋ค.
3. ์ฒ๋ฆฌํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ํ๋ก ํธ์๋์๊ฒ ์ ๊ณตํ๋ค.
์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ๋ค์ ๋๋ ค์ฃผ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
๋ทฐ์๋ ํจ์ํ ๋ทฐ์ ํด๋์คํ ๋ทฐ๊ฐ์๋ค.
๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด ํ์ด์ฌ ๊ธฐ๋ณธ๊ตฌ๋ฌธ์ธ ํจ์์ ํด๋์ค๋ฅผ ์ด์ฉํ ๋ทฐ๋ค.
ํจ์ํ ๋ทฐ๋ def ํจ์๋ช
์ผ๋ก ์์ํ๊ณ , ํด๋์คํ ๋ทฐ๋ class ํด๋์ค๋ช
์ผ๋ก ์์ํ๋ค.
๊ตฌ์ฒด์ ์ธ ์ฐจ์ด๋ ๋์ค์ ๋ค๋ฃฐ ์์ ์ด๋ฏ๋ก ์ด๋ถ๋ถ์ ๋๊ฐ๋ ์์ธํ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
๋ผ์ฐํ
์ญํ ๊ณผ ๋์์ ์๋ฒ๋ก ํด๋น ์ฃผ์์ ํ ๋น๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ์ญํ ์ ํ๋ค.
์ฆ, ํ๋ก ํธ์๋๊ฐ ๋ฐฑ์๋์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ ์์๋๋ก ๋์์ฃผ๋ ์ญํ ์ ํ๋ค๊ณ ๋ณผ์์๋ค.
๋ฆฌ์์ค๋ HTMLํ์ด์ง์ ๋ด๋ถ๋ฅผ ์ฑ์ฐ๋ ๋ฐ์ดํฐ๋ ํฌํจ๋๋ค.
url์ ์ด๋ก ๋ณด๋ค๋ ์ค์ต์ ํตํด์ ์ดํดํ๋๊ฒ ๋ ๋น ๋ฅด๊ณ ์ฝ๋ค๊ณ ์๊ฐํด์ ์ค์ตํ๋ฉด์ ํตํด ๊ธฐ๋กํด๋ณด๊ฒ ๋ค.
๋ชจ๋ธ - ํ ํ๋ฆฟ - ๋ทฐ - URL ์์๋ก ์์ ํ ์์ ์ด๋ค. (์์ ์์๋ ์๊ด์๋ค!)
๐ ๋๋ ๊ตฌ๊ธ์์ ์ฝ์ฝ๋ชฝ ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ๊ฐ์ ธ์ ๋ชฉ๋ก ํ๋ฉด์ ๋ํ๋ ์ ์๊ฒ ํ์๋ค.
1) photo ํด๋ ์์ templates ํด๋๋ฅผ ๋ฐ๋ก ๋ง๋ ํ ๊ตฌ๋ถ์ ์ํด templates ํด๋ ์์ photo ํด๋๋ฅผ ๋ง๋ค์ด์ค๋ค.
2) templates/photo ํด๋ ์์ photo_list.html์ ๋ง๋ ๋ค.
photo_list.html์ ์ฌ์ง ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๋ ํ ํ๋ฆฟ์ด๋ค.
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Photo App</title>
</head>
<body>
<h2>์ฌ์ง ๋ชฉ๋ก ํ์ด์ง</h2>
<section>
{% for photo in photos %}
<div>
<h2>
<a href="">{{photo.title}}</a>
</h2>
<img src="{{photo.image}}" width="50%">
<p>{{photo.author}}</p>
<p>{{photo.description}}</p>
</div>
{% endfor %}
</section>
</body>
</html>
๐ก ํ ํ๋ฆฟ ํ๊ทธ๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ฐ์์ฌ ์ ์๋ค!
3) ์ฌ์ง ๋ชฉ๋ก์ ๋ํ๋ด๋ ๋ทฐ๋ฅผ ์์ฑํ๋ค.
from django.shortcuts import render
from .models import Photo
def photo_list(request):
photos = Photo.objects.all()
return render(request, 'photo/photo_list.html', {'photos':photos})
โ photo_list ํจ์๋ฅผ ์ ์ํ๋ค.
โก Photo ๋ชจ๋ธ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฐ์ ธ์ {}์ ๋ฃ์ด ํ
ํ๋ฆฟ์ผ๋ก ์ ๋ฌํ๋ค.
โข photo/photo_list.html์ด ์น์ ๋ณด์ฌ์ง ์ ์๋๋ก ๊ฐ๊ณตํ์ฌ ์ ๋ฌํ๋ค.
4) ๋ฐฉ๊ธ ๋ง๋ ๋ทฐ๋ฅผ URL์ ์ฐ๊ฒฐํ๋ค.
from django.urls import path
from . import views
urlpatterns = [
path('', views.photo_list, name='photo_list),
]
โ ํ์ฌ ํด๋ ์์์๋ views.py๋ฅผ ํธ์ถํ๋ค.
โก ''๋ ๋ฃจํธ์ฃผ์๋ฅผ ์๋ฏธํ๋ค. (์ฆ, ์ฒ์ ๋ค์ด๊ฐ์๋ ๋ณด์ด๋ ์ฒซ ํ๋ฉด, ๋ฉ์ธ ํ์ด์ง)
โข views.py์ photo_listํจ์๋ฅผ ํธ์ถํ์ฌ photo_list.html์ ๋ณด์ฌ์ค๋ค.
5) ํ๋ก์ ํธ URL์ ์ฐ๊ฒฐํ๋ค.
path์์ , include #๋ฅผ ์ถ๊ฐํ๋ค.
path('', include('photo.urls'), # urlpatterns ์์ ์ด ๊ฒฝ๋ก ์ถ๊ฐํ๋ค.
''๋ ๋ฃจํธ์ฃผ์๋ฅผ ์๋ฏธํ๋ฉฐ ํ๋ก์ ํธ urls.py์ photo/urls.py ํ์ผ์ ๋ฑ๋กํ๋ ์์ ์ด๋ค.
1) photo/templates/photo ํด๋ ์์ photo_detail.html์ ์์ฑํ๋ค.
2) ์ธ๋ถ ์ ๋ณด ๋ทฐ๋ฅผ ์์ฑํ๋ค.
def photo_detail(request, pk):
photo = get_object_or_404(Photo, pk=pk)
return render(request, 'photo/photo_detail.html', {'photo':photo})
โ photo_detail ํจ์๋ฅผ ์ ์ํ๋ค. pk๋ ๋ชจ๋ธ์ ๋ฐ์ดํฐ์ธ ์ฌ์ง์ ๊ตฌ๋ถํ๋ ๋ณ์๋ค.
โก ์ฐพ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ํด๋น ๋ฐ์ดํฐ(์ฌ์ง์)๋ฅผ, ์์ผ๋ฉด 404์๋ฌ๋ฅผ ๋ฐํํ๋ ํจ์๋ค.
โข photo/photo_detail.html์ด ์น์ ๋ณด์ฌ์ง ์ ์๋๋ก ๊ฐ๊ณตํ์ฌ ์ ๋ฌํ๋ค.
3) ๋ฐฉ๊ธ ๋ง๋ ์ธ๋ถ ์ ๋ณด ๋ทฐ๋ฅผ URL์ ์ฐ๊ฒฐํ๋ค.
path('photo/<int:pk>/', views.photo_detail, name='photo_detail'),
pk๋ ๋ฐ์ดํฐ ๊ตฌ๋ถ์ ์ ์ํ์ผ๋ก ํ๊ธฐ์ํด int๋ก ์ฃผ์๋ค.
4) ํ ํ๋ฆฟ์ url์ ๋ฐ์ํ๋ค.
<a href="{% url 'photo_detail' pk=photo.pk %}">{{photo.title}}</a>
์์ ์์ฑํ๋ photo_list.html์ ๋น์ด์๋ aํ๊ทธ์์ ์ธ๋ถ ์ ๋ณด url์ ์ฐ๊ฒฐํด์ค๋ค.
1) photo/templates/photo ํด๋ ์์ photo_post.html์ ์์ฑํ๋ค.
<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Photo App</title>
</head>
<body>
<h1><a href="/">ํ์ผ๋ก ๋์๊ฐ๊ธฐ</a></h1>
<div>
<section>
<h2>New Photo</h2>
<form method="POST">
{% csrf_token %} {{form.as_p}}
<button type="submit">์๋ฃ!</button>
</form>
</section>
</div>
</body>
</html>
โ form
์์ POST ๋ฐฉ์
์ผ๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
โก csrf ๊ณต๊ฒฉ
์ ๋ฐฉ์งํ๊ธฐ์ํด csrf_token
์ ์ถ๊ฐํด์ค๋ค.
โข form.as_p
๋ฅผ ์ด์ฉํด ๋ฐ์ดํฐ์ ํ
์คํธ๊ฐ <p>
์์ ์์ฑ๋๊ฒ ํ๋ค.
form ํ๊ทธ ๋ฐ์ดํฐ ์ ์ก ๋ฐฉ๋ฒ(method)
1. GET
- ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ URL์ ๋ถ์ฌ ์ ์กํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ ๋ค ๋ณด์ฌ ๋ณด์์ ์ทจ์ฝํ๋ค.
- ์ ์ก ์๋๋ POST ๋ฐฉ์๋ณด๋ค ๋น ๋ฅด๋ค.
- ํ์ด์ง๋ฅผ ์ด๋ํ ๋ ํ๋ผ๋ฏธํฐ ์ ์ก์ ํ๊ฑฐ๋ ๊ฒ์๊ฒฐ๊ณผ์ฒ๋ผ ๊ฐ๋จํ๊ณ ๋ณด์์ด ํ์ํ์ง ์์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
2. POST
- ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ณธ๋ฌธ์์ ํฌํจํด์ ์ ์กํ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๊ฐ URL์ ๋ณด์ด์ง ์์ GET๋ฐฉ์๋ณด๋ค ๋ณด์์ ์ฐ์ํ๋ค.
- ๋ก๊ทธ์ธ, ํ์๊ฐ์ ์ฒ๋ผ ๋ณด์์ด ํ์ํ๊ฑฐ๋ ๋ณต์กํ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
CSRF(Cross-Site Request Forgery, ํฌ๋ก์ค ์ฌ์ดํธ ์์ฒญ ์์กฐ)
- ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๋ ์๋ํ์ง์์ ์์ฒญ์ผ๋ก ๋ง๋ค์ด ์๋ฒ๋ก ๋ณด๋ด๋ ๊ณต๊ฒฉ
- ์๋ฒ์์ ๋๋ค ๊ฐ์ ์์ฑํด response์ ํฌํจํ์ฌ ์ ๋ฌ๋๊ณ , ์ฌ์ฉ์ ์ธ์ ์ ๋ณด์ ์ฐ๊ด๋์ด ์๋ฒ์ ์ ์กํ๊ณ ์๋ฒ๋ ํ ํฐ๊ณผ ์ธ์ ์ ์ ํจ์ฑ์ ๊ฒ์ฌํด ์์ฒญ์ ์ฒ๋ฆฌํ๋ค.
POST ๋ฐฉ์ ์ฌ์ฉ์ ์ฃผ์์ฌํญ
1. form์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ csrf_token์ด ๊ฐ์ด ์ ๋ฌ๋ ์ ์๋๋ก ์จ๊น ๋ฐ์ดํฐ๋ก ๊ฐ์ด ์ ์กํด์ฃผ์ด์ผํ๋ค.
2. Django์์๋ ๋ชจ๋ POST ์์ฒญ์ ๋ํด CSRFํ ํฐ์ ๊ฒ์ฌํ๋ค.
3) photo/forms.py์ ์์ฑํ๋ค.
from django import forms
from .models import Photo
class PhotoForm(forms.ModelForm):
class Meta:
model = Photo
fields = ('title', 'author', 'image', 'description')
์ฌ์ง์ ๋ฑ๋กํ๋ ํผ์ PhotoForm์ ๋ง๋ค์ด์ค๋ค.
4) ์์ฑ ๋ทฐ๋ฅผ ์์ฑํ๋ค.
from .forms import PhotoForm
def photo_post(request):
if request.method == "POST":
form = PhotoForm(request.POST)
if form.is_valid():
photo = form.save(commit=False)
photo.save()
return redirect('photo_detail, pk=photo.pk)
else:
form = PhotoForm()
return render(request, 'photo/photo_post.html', {'form':form})
โ ํ์ฌ ํด๋ ์์ ์๋ forms.py์ PhotoForm ํด๋์ค๋ฅผ ์ฐธ์กฐํ๋ค.
โก photo_post ํจ์๋ฅผ ์ ์ํ๋ค.
โข ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋ค์ด์จ ์์ฒญ์ด POST์ธ์ง ํ๋ณํ๋ค.
โฃ ์์ฒญ์ด POST์ด๋ฉด ํ
ํ๋ฆฌ์ ํผ์ ์๋ ๋ฒํผ์ด ๋๋ฆฐ ๊ฒ์ด๋ค.(์ฌ์ฉ์๊ฐ ์ฌ์ง์ ์ฌ๋ฆฐ๋ค๋ ๋ป์ด๋ค)
โค ์์ฒญ์ผ๋ก ๋ค์ด์จ ํผ ๋ฐ์ดํฐ๋ฅผ form ๋ณ์์ ์ ์ฅํ๋ค.
โฅ ํผ์ ๋ง์ถฐ ์ ์์ฑ๋ ๋ฐ์ดํฐ์ธ์ง ๊ฒ์ฌํ๊ณ ์ด ๋ฐ์ดํฐ๋ฅผ photo์ ์ ์ฅํด DB์ ์ ์ฅํ๋ค.
โฆ ๋ค์ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋์ํจ๋ค.(photo_detail๋ก)
โง POST์์ฒญ์ด ์๋๋ฉด ์๋ก ๋ค์ด์จ ์ฌ์ฉ์์ด๋ฏ๋ก ํผ์ ์ ๊ณตํ๋ค.
โจ ํ
ํ๋ฆฟ๊ณผ form์ ๋๊ฒจ์ฃผ์ด ์ฌ์ฉ์๊ฐ ์
๋ ฅํ ์ ์๋ ํ๋ฉด์ ์ ๊ณตํ๋ค.(photo_post.html)
5) ๋ฐฉ๊ธ ๋ง๋ ์์ฑ ๋ทฐ๋ฅผ URL์ ์ฐ๊ฒฐํ๋ค.
path('photo/new/', views.photo_post, name='photo_post'),
์์ฑํ๋ ํ์ด์ง์ ์ฃผ์์ฐฝ์ new/๋ฅผ ๋ณด์ด๊ฒ ํ๊ณ , photo_post ํจ์๋กค ํธ์ถํ๋ค.
6) ๋ฉ์ธํ๋ฉด ํ ํ๋ฆฟ์ url์ ๋ฐ์ํ๋ค.
<h3><a href="{% url 'photo_post' %}">New Photo</a></h3>
photo_list.html์ New Photo๋ฅผ ๋๋ฅด๋ฉด ๋ทฐ๋ฅผ ํตํด photo_post๋ฅผ ํธ์ถํ๋ค. (ํ ํ๋ฆฟ๋ ๋ฆฌํด)
์์ ํ๋ฉด์ ์์ฑํ๋ฉด๊ณผ ๋ค๋ฅผ๊ฒ ๋ณ๋ก ์๋ค. ๋๊ฐ์ด ํผ์ ๋ฐ์์ผํ๊ณ POST๋ฐฉ์์ผ๋ก ์ ์ก์ ํ์ง๋ง ์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ์ฑ์์ ธ์๋ค๋ ๊ฒ์ด ๋ค๋ฅด๋ค. ์ด ๋ถ๋ถ์ ์ฐธ๊ณ ํด์ ๊ตฌํ์ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
1) ์์ ๋ทฐ๋ฅผ ์์ฑํ๋ค.
def photo_edit(request, pk):
photo = get_object_or_404(Photo, pk=pk)
if request.method == "POST":
form = PhotoForm(request.POST, instance=photo)
if form.is_valid():
photo = form.save(commit=False)
photo.save()
return redirect('photo_detail', pk=photo.pk)
else:
form = PhotoForm(instance=photo)
return render(request, 'photo/photo_post.html', {'form':form})
โ photo_edit ํจ์๋ฅผ ์ ์ํ๋ค.
โก ์์ ํ ๋์์ pk๋ก ์ฐพ์์ค๋๋ฐ, ์ฐพ๋ ๋์์ด ์์ผ๋ฉด 404 ์๋ฌ๋ฅผ ๋ฐํํ๋ค.
โข ๋ค์ด์จ ์์ฒญ์ด POST์ธ์ง ํ๋ณํ๊ณ ์์ ์ ์๋ฏธํ๋ POST์ด๋ฉด
โฃ instance ๋ณ์์ ์์ ๋์์ด ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ ํ๋ค.
โค ํผ์ ๋ง๊ฒ ์ ์์ฑ๋ ๋ฐ์ดํฐ์ธ์ง ํ์ธ ํ DB์ ์ ์ฅํ๋ค.
โฅ photo_detail, ์ฆ ์ธ๋ถ ํ๋ฉด ํ์ด์ง๋ก ์ด๋ํด์ ์์ ๋ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
โฆ GET ์์ฒญ์ด ๋ค์ด์ค๋ฉด photo ๋ฐ์ดํฐ๋ฅผ instance๋ณ์์ ๋ด์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋๋ก ์ฒ๋ฆฌํ๋ค.
โง ์กฐ๊ฑด๋ฌธ์ด ๋๋๋ฉด photo_postํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
2) ์์ ๋ทฐ๋ฅผ URL์ ์์ฑํ๋ค.
path('photo/<int:pk>/edit/', views.photo_edit, name='photo_edit),
pk๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๊ณ ์ด ๋ฐ์ดํฐ๋ฅผ ์ซ์๋ก ๊ตฌ๋ถํ๊ธฐ ์ํด ์ ์ํ(int)์ผ๋ก ๋ฐ์์จ๋ค.
3) ์ธ๋ถํ๋ฉด ํ
ํ๋ฆฟ์ url์ ๋ฐ์ํ๋ค.
<h3><a href="{% url 'photo_edit' pk=photo.pk %}">Edit Photo</a></h3>
์ด๊ฒ ๋ง์ง๋ง~~~
์ด๋ ๊ฒ ์ฒซ๋ฒ์งธ ์ฅ๊ณ ์ค์ต์ด ๋๋ฌ๋ค......
์ ๋ง ๊ฐ๋จํ ํ์ด์ง๋ฅผ ๊ตฌํํ๋ ์ค์ต์ด์๋๋ฐ, ์๊ฐ๋ณด๋ค ๋ค์ํ ์ค๋ฅ๋ฅผ ์ ํ๊ณ ๊ตฌํํด์ผํ ๋ถ๋ถ์ด ๋ง์๋ค..
๊ทธ๋๋ ์๋ฌ ์ก๋๊ฑฐ ๋๋ฌด ์พ๊ฐ ์์ด>< ์ฌ๋ฐ์ด>< (๋ ํด๊ฒฐํด์ ๋คํ์ฐ^^)