해야할 것
1. 상세페이지 html
2. 글 목록 페이지에서 상세페이지로 이동하는 href 속성
3. view 와 url 추가
☝🏻 상세페이지 만들기
포스팅 목록에서 한 포스팅에 더보기를 클릭할시 특정 url <http://127.0.0.1:8000/room_page/1/> 페이지로 이동하고
클릭한 포스팅 타이틀과 서브 타이틀, 내용, 작성일, 수정일 정보 가져오기
1. view 와 url 추가해주기
# room/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('search',views.search, name="search"), #검색
path('room_add/', views.room_add, name='room_add'), # 모집글추가페이지
path('room_page/<int:pk>/', views.room_page, name='room_page'), #모집글상세페이지
]
패스 부분
<http://127.0.0.1:8000/room_page/1/> -> path('room_page/<int:pk>/',
pk = primary key(숫자, int)
# room/views.py
# 모집상세페이지
def room_page(request, pk):
post_pk = Posting.objects.get(pk=pk)
res_data = { 'posts': post_pk }
return render(request, 'room_page.html',res_data) # 상세페이지 render
view에 매개변수 pk 추가하기, <int:pk> 다르게 쓰면 오류뜸
# room/room_list
{% block content %}
...
{% if posts %}
{% for p in posts %}
...
<button type="button">
<a href="{{ p.get_absolute_url }}"
class="text-white bg-gradient-to-r from-cyan-500 to-blue-500 hover:bg-gradient-to-bl focus:ring-4 focus:outline-none focus:ring-cyan-300 dark:focus:ring-cyan-800 font-medium rounded-full text-sm px-5 py-2.5 text-center mr-2 mb-2">더보기</a>
</button>
<a href="{{ p.get_absolute_url }}" 이 부분은
room/mosels.py를 보면 되는데 포스팅 모델을 선언해줄 때
# room/models.py
from django.db import models
class Posting(models.Model):
title = models.CharField(max_length=50, verbose_name="제목") #제목
sub_title = models.CharField(max_length=100, blank=True, verbose_name="부제목") #부제목
content = models.TextField(verbose_name="내용") #콘텐츠
# 작성자도 만들어야함
create = models.DateTimeField(verbose_name='작성일', auto_now_add=True) #작성일
update = models.DateTimeField(verbose_name="수정일", auto_now=True) #수정된 시간만 수정
def __str__(self):
return f'[{self.id}] {self.title} / {self.create}' # id=id
def get_absolute_url(self): #어드민에서 게시글 바로 볼 수 있음
return f'room_page/{self.id}/'
class Meta:
verbose_name = "포스팅 목록"
verbose_name_plural = "포스팅 목록"
- get_absolute_url 는 reverse 함수를 통해 모델의 개별 데이터 url을 문자열로 반환
ㅊㅊ -> https://pythonblog.co.kr/blog/56/
-> https://wayhome25.github.io/django/2017/05/05/django-url-reverse/
-> https://velog.io/@hyeseong-dev/django-getabsoluteurl
return ... 새로고침과 다시 runserver 해도 ... 잘 안먹었는지 안되다가 됐음
return f'room_page/{self.id}/' or return f'{self.id}/' 처음 걸로 했다가 2번째걸로 수정했더니 됐다가 또 안되길래 첫번째걸로 했더니 또 됐음 뭐꼬..
2. 상세페이지 html
# room/room_page.html
{% extends 'base.html' %}
{% block title %}{{ posts.title }} | {% endblock %}
{% block content %}
<h1>제목 : {{ posts.title }}</h1>
<h1>서브제목 : {{ posts.sub_title }}</h1>
<h1>내용 : {{ posts.content }}</h1>
<h1>작성일 : {{ posts.create }}</h1>
<h1>수정일 : {{ posts.update }}</h1>
{% endblock %}
처음에 {{ p.title }} 로 했다가 왜 안될까 어떻게 가져와야할까 생각하다가
# room/views.py
# 모집상세페이지
def room_page(request, pk):
post_pk = Posting.objects.get(pk=pk)
res_data = { 'posts': post_pk }
print(res_data)
return render(request, 'room_page.html',res_data)
print(res_data) 를 찍어봤음
res_data = { 'posts': post_pk } 이렇게 지정을 했으니까
{{ posts.title }}로 찍으면 되는게 아닌가 했더니 됐음
해야할 것
- 마이페이지 만들기
- 로그인일 경우 글쓰기 가능/ 로그아웃일 경우 로그인하라는 문구와 로그인 페이지 이동
- 포스팅 모델에 작성자 필드 추가
'FrameWork > Django' 카테고리의 다른 글
7월 25일(월) 글삭제/글수정 (0) | 2022.07.26 |
---|---|
7월 21(목) 작성자필드추가/마이페이지추가/회원만 글쓰기 (0) | 2022.07.22 |
7월 19일(화) (0) | 2022.07.20 |
7월 18일(월) (0) | 2022.07.19 |
7월 15일~17일(금/토/일) 글쓰기기능추가 (0) | 2022.07.18 |