티스토리 뷰
상세보기
게시판에서 글관련해 제목이나 특정 버튼을 누르면 들어가서 볼 수 있게 하는것이다.
그리고 detail.html부분은 구현 난이도에 따라 여러가지 방식을 적어두었고, 계속 추가할 예정이다.
Variable routing
고유한 글을 보기 위해서는 id(primary key)가 필요하다.
따라서 아래코드의 굵은 글씨는 같은 값을 써야한다.
index.html에 아래와 같이 a태그를 추가하자.
<a href="/article/{{ article.article_pk }}/">글 보러가기</a>
urls.py
path('<int:article_pk>', views.detail)
views
def detail(request, article_pk):
article = Article.objects.get(id=article_pk) : 이때 id 대신 pk로 적어도 동일한 값이 저장된다.
context = {
'article' : article
}
return render(request, 'articles/detail.html', context)
detail.html
<p>{{ article.article_pk }}</p>
<p>{{ article.content }}</p>
<p>{{ article.created_at }}</p>
<p>{{ article.updated_at }}</p>
배운 것들을 추가 적용해 보자.(개념들 정독 하고 오자.)
기본적으로 상세보기는 어떤한 글을 보는 것이기 때문에 Variable routing이다
+ get_object_or_404
index.html
{% for article in articles %}
<a href="{% url 'articles:detail' article.pk %}">글보기</a>
{% endfor %}
urls.py
path('<int:pk>/', views.detail, name='detail')
veiws.py
from django.shortcuts import render, redirect, get_object_or_404
def detail(request, pk):
article=get_object_or_404(Article, pk=pk)
context={
'article':article
}
return render(request, 'articles/detail.html', context)
+Article.objects.get(pk=pk) => get_object_or_404
get 은 없어도 500 에러이고 많아도 500 에러이다. 글 자체가 없는것은 나의 잘못이 아니다.
detail.html
<p>{{ article.article_pk }}</p>
<p>{{ article.content }}</p>
<p>{{ article.created_at }}</p>
<p>{{ article.updated_at }}</p>
+ <hr>: 수평선 <br>:엔터
bootstrap 적용 최종
{% block body %}
<h2>{{ article.title }}</h2>
<p>{{ article.content }}</p>
<form action="{% url 'articles:delete' article.pk %}" method="POST" class="d-inline">
{% csrf_token %}
<button class="btn btn-primary">삭제</button>
</form>
<a href="{% url 'articles:update' article.pk %}"><button class="btn btn-primary">수정</button></a>
{% endblock %}
'Web > Django' 카테고리의 다른 글
[Django] ORM (0) | 2020.06.24 |
---|---|
[django] Form으로 사용자의 입력 받기+ModelForm (0) | 2020.06.22 |
[Django]html의 탐색 순서에 따른 오류 해결책 (0) | 2020.06.20 |
[Django]코딩을 위한 잡다한 추가 팁 (0) | 2020.06.18 |
[Django] 참고 사이트 (0) | 2020.06.16 |
- Total
- Today
- Yesterday
- TensorFlow
- Deque
- nodejs
- Python
- read_csv
- nextjs autoFocus
- BFS
- login
- pandas
- mongoDB
- react autoFocus
- JavaScript
- django
- 클라우데라
- Queue
- next.config.js
- DFS
- 자연어처리
- UserCreationForm
- NextJS
- useState
- Express
- 자료구조
- useHistory 안됨
- react
- error:0308010C:digital envelope routines::unsupported
- typescript
- vuejs
- Vue
- logout
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |