Django/Django study
[Django] 팔로우 언팔로우
카늬
2022. 12. 10. 12:14
urls.py
urlpatterns = [
...
path('following/<int:to_user_id>/',views.following,name="following"),
path('unFollowing/<int:to_user_id>/',views.unFollowing,name="unFollowing"),
]
views.py
#팔로우 목록
@login_required(login_url="common:login")
def follow_list(request,user_id):
follow = get_object_or_404(Follow,user_id=user_id)
userList = User.objects.exclude(pk=request.user.pk)#자기자신을 재외하고 불러옴
context = {"follow" : follow , "userList" : userList}
return render(request,"common/follow_list.html",context)
#팔로우
@login_required(login_url="common:login")
def following(request,to_user_id):
to_user = get_object_or_404(User,pk = to_user_id)
followUser = get_object_or_404(Follow,user = request.user)
followUser.to_user.add(to_user)
return redirect('common:follow_list',user_id = request.user.id)
#언팔로우
@login_required(login_url="common:login")
def unFollowing(request,to_user_id):
to_user = get_object_or_404(User,pk = to_user_id)
followUser = get_object_or_404(Follow,user = request.user)
followUser.to_user.remove(to_user)
return redirect('common:follow_list',user_id = request.user.id)
follow_list.html
{% extends 'base/base.html' %}
{% load board_filter %}
{% block content %}
<div class="container my-3" >
<div class = "row">
<div class ="col-xs-8 col-sm-6">
<table class="table">
<thead>
<tr class="text-center table-dark">
<th>친구</th>
</tr>
</thead>
<tbody>
{% if follow%}
{%for user in follow.to_user.all%}
<tr class-"text-start">
<td>{{user.profile.nickname}}
<a href = "{% url 'common:unFollowing' to_user_id=user.id %}" data-url = :"{% url 'common:unFollowing' to_user_id=user.id %}"
class="unFollower btn btn-outline-secondary">
삭제
</a>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="4">친구가 없습니다.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
<div class ="col-xs-4 col-sm-6">
<table class="table">
<thead>
<tr class="text-center table-dark">
<th>친구추가</th>
</tr>
</thead>
<tbody>
{% if userList%}
{%for to_user in userList.all%}
<tr class-"text-start">
<td>{{to_user.profile.nickname}}
<a href = "{% url 'common:following' to_user_id=to_user.id %}" data-url = :"{% url 'common:following' to_user_id=to_user.id %}"
class="follower btn btn-outline-secondary">
추가
</a>
</td>
</tr>
{% endfor %}
{% else %}
<tr>
<td colspan="4">친구가 없습니다.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</div>
{% endblock %}
{% block script %}
<script type='text/javascript'>
const follower_elements = document.getElementsByClassName("follower");
Array.from(follower_elements).forEach(function(element){
element.addEventListener('click',function(){
if(confirm("팔로우 하시겠습니까?")){
location.href = this.dataset.uri;
};
});
});
const unfollower_elements = document.getElementsByClassName("unFollower");
Array.from(unfollower_elements).forEach(function(element){
element.addEventListener('click',function(){
if(confirm("삭제 하시겠습니까?")){
location.href = this.dataset.uri;
};
});
});
</script>
{% endblock %}
실행화면

