π μ₯κ³ ν΄λ‘ μ½λ© 4μΌμ°¨
1) νμ΄μ§
π content/views.py
# Paginator ν΄λμ€ μ¬μ©
from django.core.paginator import Paginator
def content(request):
if request.method == 'GET':
user = request.user.is_authenticated
if user:#λ‘κ·ΈμΈμ΄ λμ΄ μλ€λ©΄
user_list = UserModel.objects.all().exclude(username = request.user.username)
all_content = ContentModel.objects.all().order_by('-created_at')
paginator = Paginator(all_content, 10)
page = request.GET.get('page')
posts = paginator.get_page(page)
context = {
'content':all_content,
'user_list':user_list,
'posts' : posts
}
return render(request,'content/home.html',context)
else:#λ‘κ·ΈμΈμ΄ μλμ΄ μλ€λ©΄
return redirect('/sign-in')
π content/home.html
<div class="page_num">
{% if posts.has_previous %}
<a href="?page={{posts.previous_page_number}}">back</a>
{% endif %}
<div class = 'paginator'>
<span>{{posts.number}}</span>
<span>/</span>
<span>{{ posts.paginator.num_pages}}</span>
</div>
{% if posts.has_next %}
<a href="?page={{ posts.next_page_number}}">next</a>
{% endif %}
</div>
2) μ’μμ
π 쑰건문(if)μ μ¬μ©ν΄μ μ’μμκ° λλ¦° κΈλ§ 보μ΄λλ‘ νλ€
{% if con in user.likes.all %}
{% endif %}
π content/views.py
@login_required
def like_content(request):
if request.method == 'GET': # μμ²νλ λ°©μμ΄ GET λ°©μμΈμ§ νμΈνκΈ°
user = request.user.is_authenticated
if user:
user_list = UserModel.objects.all().exclude(username = request.user.username)
all_content = ContentModel.objects.all().order_by('-created_at')
context = {
'content':all_content,
'user_list':user_list,
}
return render(request,'content/like_content.html',context)
else:
return redirect('/sign-in')
3) νλ‘μ°
π user/models.py
class UserModel(AbstractUser):
class Meta:
db_table = "my_user"
follow = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name = 'followee')
π user/views.py
@login_required
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('/')
4) νλ‘ν