본문 바로가기
TIL(Daily)/클론코딩

Wed/05/Oct/22 Django 인스타 클론코딩

by Hawie 2022. 10. 6.

오늘은 제출 전날이라 늦게까지 팀원들과 작업하고,

늦은 시간에 쓰게 되었다.

 

오늘 작성한 코드에 대해 이야기 해보겠다.

구현기능은.

팔로워/팔오우 기능이다.

 

#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 %}

댓글