์ข‹์•„์š” ๐Ÿ‘

hey heyยท2021๋…„ 12์›” 7์ผ
0

Django

๋ชฉ๋ก ๋ณด๊ธฐ
7/9
post-thumbnail
**MODEL**
class Article(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
   
    like_users = models.ManyToManyField(
        settings.AUTH_USER_MODEL,
        related_name='like_articles', # ์—ญ์ฐธ์กฐํ•˜๊ธฐ ์ข‹์€ ์ด๋ฆ„
        )
    
    title = models.CharField(max_length=10)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.title

๋ณ€์ˆ˜๋ช… ํ•ญ์ƒ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ๋‚ด์šฉ์ธ์ง€ ํ™•์‹คํ•˜๊ฒŒ ์ž‘์„ฑํ•ด ์ค„๊ฒƒ

M:N ๊ด€๊ณ„ ์ฆ‰ ; ๋‹ค๋Œ€๋‹ค ๊ด€๊ณ„ -> ๋ณต์ˆ˜ํ˜•

MTM(Model๋ช…,related_name='~~')


User์™€ ๊ฒŒ์‹œ๊ธ€์˜ ๊ด€๊ณ„ ํ˜•์„ฑ

์š”์ฒญ๋ณด๋‚ธ user ์ •๋ณด๋Š” request์— ๋“ค์–ด์žˆ๋‹ค.

๊ทธ๋Ÿผ ํ•„์š”ํ•œ ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ django๊ฐ€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก

**URL**
path('<int:article_pk>/like/',views.like,name='like'),
**VIEWS**
@require_POST
def like(request,article_pk):
    
    article = get_object_or_404(Article,pk=article_pk)
    
    if request.user.is_authenticated:
        # if request.user in article.like_users.all():
        if article.like_users.filter(pk=request.user.pk).exists():
            article.like_users.remove(request.user)
        else:
            article.like_users.add(request.user)

        return redirect('articles:index')
    return redirect('accounts:login')

Article.objects.get(pk=article_pk)

Model.objects.get ์กฐํšŒํ•˜๋Š” ๊ฒƒ๊ณผ

get404 ์ฐจ์ด๋Š” ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์—†์œผ๋ฉด ์˜ค๋ฅ˜ // 404 not found ์ฐจ์ด

ํ˜„์žฌ ์š”์ฒญ์„ ๋ณด๋‚ธ ์œ ์ €๊ฐ€ ์ด๋ฏธ ์ด ๊ฒŒ์‹œ๊ธ€์„ ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด?

๊ทธ๋Ÿผ ๊ด€๊ณ„๋ฅผ ๋Š๋Š”๋‹ค.

**INDEX**
<form action="{% url 'articles:like' article.pk %}" method='POST'>
      {% csrf_token %}
      {% if request.user in article.like_users.all %}
        <button class='far fa-thumbs-up btn text-danger'></button>
      {% else %}
        <button class='fas fa-thumbs-up btn text-danger'></button>
      {% endif %}
    </form>
    <p>{{article.like_users.all|length}}๋ช…์˜ <i class="fas fa-thumbs-up"></i></p>
profile
FE - devp

0๊ฐœ์˜ ๋Œ“๊ธ€