์ด๋ฒ django ํ ํ๋ก์ ํธ์์๋ ๊ธฐํ์ ๊ธฐ๋ฐ์ผ๋ก ์์ธ ์ถ์ฒ ์ฌ์ดํธ๋ฅผ ๋ง๋ค๊ฒ ๋์๋ค.
๋๋ ์ด๋ฒ ๋งก์ ๊ธฐ๋ฅ์ผ๋ก๋
<๊ฐ์ธํ์ด์ง>
- [x] ์ฐ ๋ชฉ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
- [x] ์ฐ ์์ธ ํด๋ฆญ ์ ์์ธํ์ด์ง ์ด๋
- [x] ๋ฆฌ๋ทฐ ๋ชฉ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
- [x] ๋ฆฌ๋ทฐ ๋ชฉ๋ก ํด๋ฆญ ์ ์์ธํ์ด์ง ์ด๋
- [ ] ๋ชฉ๋ก ๋ฆฌ์คํธ ์์ (์ต์ ์, ใ
ใ
ใ
์ ๋ฑ)
- [x] ์์ธ ํด๋ฆญ ์ ํด๋น ์์ธํ์ด์ง ์ด๋
<์์ธํ์ด์ง>
- [x] ์ฐํ๊ธฐ ๊ธฐ๋ฅ
- [x] ์ฐํ๊ธฐ ์ทจ์
์์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฒ ๋์๋ค.
์ฐ ๋ชฉ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
- ์ฌ์ฉ์์ id ๋ฅผ ๋ฐ์ UserModel ๋ก ๋์กฐํ์ฌ user ๋ณ์์ ์ ์ํ๊ณ ํด๋น ์ฌ์ฉ์์ ์์ธ ์์๋ฆฌ์คํธ(ManyToManyField related_name=wine_wish) ์ ๋ณด๋ฅผ wine_list ๋ณ์์ ์ ์ํ๋ค.
- return render ๋ก ๋ณด๋ผ ์ฃผ์์ wine_list ์ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค.
# ์ฐ ๋ชฉ๋ก ๊ฐ์ ธ์ค๊ธฐ
@login_required
def get_wish(request, id):
user = UserModel.objects.get(id=id)
if request.method == 'GET':
wine_list = user.wine_wish.all()
return render(request, 'user/my_wish.html', {'wine_list': wine_list})
์ฐ ์์ธ ํด๋ฆญ ์ ์์ธํ์ด์ง ์ด๋ & ๋ฆฌ๋ทฐ ๋ชฉ๋ก ํด๋ฆญ ์ ์์ธํ์ด์ง ์ด๋
- a ํ๊ทธ๋ฅผ ํตํด ์์ธ์ ์ ๋ณด๊ฐ ๋ด๊ธด path ์ฃผ์๋ก ์ ์
{% for wine in wine_list %}
{% csrf_token %}
<a class="dh-mywish-card" href="/wine/{{ wine.id }}">
๋ฆฌ๋ทฐ ๋ชฉ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
- ์ฌ์ฉ์์ id ๋ฅผ ๋ฐ์ UserModel ๋ก ๋์กฐํ์ฌ user ๋ณ์์ ์ ์ํ๊ณ ํด๋น ์ฌ์ฉ์์ ์์ธ ๋ฆฌ๋ทฐ๋ฆฌ์คํธ(objects.filter ์ฌ์ฉ) ์ ๋ณด๋ฅผ review_list ๋ณ์์ ์ ์ํ๋ค.
- return render ๋ก ๋ณด๋ผ ์ฃผ์์ review_list ์ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค.
# review ๋ฆฌ์คํธ ๋ถ๋ฌ์ค๊ธฐ
@login_required
def get_review(request, id):
user = UserModel.objects.get(id=id)
review_list = ReviewModel.objects.filter(author_id=user).order_by('-created_at')
return render(request, 'user/my_review.html', {'review_list': review_list})
์์๋ฆฌ์คํธ ์ถ๊ฐ ๋ฐ ์ทจ์
- django ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์์ฉํ์ฌ ๊ฐ๋จํ ์ถ๊ฐ ๋ฐ ์ญ์ ๋ก์ง์ ๊ตฌํ
# ์ฐ ๋ชฉ๋ก ์ถ๊ฐํ๊ธฐ
@login_required
def post_wish(request, id, code):
if request.method == 'POST':
wine = WineModel.objects.get(id=id)
user = request.user
click_wish = user.wine_wish.all()
if wine in click_wish:
user.wine_wish.remove(wine)
else:
user.wine_wish.add(wine)
if code == 1:
return redirect('wines:wine_detail_view', id)
elif code == 2:
return redirect('users:get_wish', user.id)