오늘은 제출 전날이라 늦게까지 팀원들과 작업하고,
늦은 시간에 쓰게 되었다.
오늘 작성한 코드에 대해 이야기 해보겠다.
구현기능은.
팔로워/팔오우 기능이다.
#models.py#
follow = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='followee')
#urls.py#
from django.contrib import admin
from django.urls import path
from . import views
from .views import UploadProfile
urlpatterns = [
path('user/', views.user_view, name='user-list'),
path('user/follow/<int:id>/', views.user_follow, name='user-follow'),
]
#views.py#
from .models import UserModel
def user_follow(request, id):
me = request.user
click_user = UserModel.objects.get(id=id)
if me in click_user.followee.all():
click_user.followee.remove(request.user)
else:
click_user.followee.add(request.user)
return redirect('/user')
Templates/use_html
<!-- templates/user/user_list.html -->
{% extends 'base.html' %}
{% block title %}
사용자 리스트
{% endblock %}
{% block content %}
<div class="container timeline-container">
<div class="row">
<!-- 왼쪽 컬럼 -->
<div class="col-md-3">
</div>
<!-- 오른 쪽 컬럼-->
<div class="col-md-7">
<div class="row">
<div class="alert alert-success" role="alert">
팔로우 : {{ user.followee.count }} 명 / 팔로우 : {{ user.follow.count }} 명
</div>
</div>
<div class="row">
{% for ul in user_list %}
<div class="card">
<div class="card-body">
<h5 class="card-title">{{ ul.username }}</h5>
<h6 class="card-subtitle mb-2 text-muted">{{ ul.email }}</h6>
<p class="card-text">
{{ ul.bio }}
</p>
<p class="card-text">
팔로잉 {{ ul.follow.count }} 명 / 팔로워 {{ ul.followee.count }} 명
</p>
{% if ul in user.follow.all %}
<a href="/user/follow/{{ ul.id }}" class="btn btn-outline-dark">팔로우 취소</a>
{% else %}
<a href="/user/follow/{{ ul.id }}" class="btn btn-outline-dark">팔로우</a>
{% endif %}
</div>
</div>
<hr>
{% endfor %}
</div>
</div>
<div class="col-md-2"></div>
</div>
</div>
{% endblock %}
'TIL(Daily) > 클론코딩' 카테고리의 다른 글
Thu/06/oct/22 Django 클론코딩-KTP회고록 (1) | 2022.10.06 |
---|---|
Thu/29/Sep/22-인스타그램 클론코딩-1 (0) | 2022.09.30 |
댓글