가입하지 않은 유저 -> 가입한 유저 순으로 진행할 것
1. room/html
2. room/url
from django.urls import path
from . import views
urlpatterns = [
#http://127.0.0.1:8000/room/page/<int:pk>
path('room/page/<int:pk>', views.room_page, name='room_page'), #글상세페이지
#http://127.0.0.1:8000/room/join/<int:pk>
path('room/join/<int:pk>',views.room_join, name="room_join"), #가입
]
3. room/view
가입을 하시겠습니까?
[ if문으로 제어 -> method post or method get ]
1. 가입하기
- 가입 후 룸 상세페이지로 이동
- Room_member에 저장
2. 뒤로가기
- 룸 상세페이지로 이동
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from django.utils import timezone
#모델 가져오기
from room.models import Room, Room_member
# 가입하기
def room_join(request,pk):
posts = Room.objects.get(pk=pk)
members = Room_member.objects.all()
res_data = {'posts':posts, 'members':members}
join_user = request.user # 현재 유저
if request.method == 'POST':
memberobj = Room_member()
memberobj.join_user = join_user
memberobj.group = posts
memberobj.date_joined = timezone.now() # 현재시간
memberobj.save()
return render(request, 'room_page.html', res_data)
return render(request, 'room_join.html',res_data)
이제 각 방마다 가입을 했는지 안했는지 제어해야함
4. model Room 과 Room_member
Room 의 title 과 Room_member 의 group (정확하게는 title만) 같을 때
각 방의 멤버 리스트에 멤버 렌더링하거나
현재 로그인한 유저가 해당 방의 멤버 리스트에 있을 경우 가입됨/탈퇴하기 버튼으로 바뀐다던가
등등 제어할 수 있음
https://jinmay.github.io/2020/05/25/django/django-values-and-values-list/
#room/views.py
# 모집상세페이지
def room_page(request, pk):
post_pk = Room.objects.get(pk=pk)
members = Room_member.objects.all()
room_name = Room.objects.values()
print(room_name) #요결과
res_data = {'posts': post_pk, 'members': members }
return render(request, 'room_page.html',res_data)
#room/views.py
# 모집상세페이지
def room_page(request, pk):
post_pk = Room.objects.get(pk=pk)
members = Room_member.objects.all()
room_name = Room.objects.values('title')
print(room_name) #요결과
res_data = {'posts': post_pk, 'members': members }
return render(request, 'room_page.html',res_data)
근디 문제는 model Room_member 가 관계형 데이터베이스로
class Room_member(models.Model):
join_user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name="가입자")
group = models.ForeignKey(Room, on_delete=models.CASCADE, verbose_name="room")
date_joined = models.DateField(verbose_name="가입날짜")
group 의 title만 가져오고 싶은디 그 방법을 찾아야함
이 부분은 내일 더 공부해보겠습니다
'FrameWork > Django' 카테고리의 다른 글
마이페이지 (1) | 2022.09.23 |
---|---|
9월 15일 (목) 질문 (0) | 2022.09.16 |
9월 2일(금) 페이지네이션, room에 비밀번호가 있을 경우 비밀방, 없을 경우 공개방 띄우기, room 가입하기 (0) | 2022.09.02 |
8월 29일(월) (0) | 2022.08.31 |
8월 26일(금) room 추가/수정/삭제 , room 검색, room 상세페이지 (0) | 2022.08.27 |