앵커(anchor) 태그 : URL호출시 원하는 위치로 이동
예를 들어 HTML코드 중간에 <a name="django"></a> 라는 앵커태그가 있다면 이 HTML을 호출하는 URL 뒤에 #django 라고 붙여주면 해당 페이지가 호출되면서 해당 앵커로 스크롤이 이동
답변등록, 답변수정, 댓글등록, 댓글수정시 이 앵커태그를 이용하여 원하는 위치로 이동할 수 있도록 수정하기
<a name="answer_{{ answer.id }}"></a>
return redirect('{}#answer_{}'.format(
resolve_url('pybo:detail', question_id=question.id), answer.id))
답글을 달면 바로 그 부분으로 스크롤 됨 (#)
동일한 방법으로 댓글 앵커도 추가
답변 댓글에 앵커태그(<a name="comment_{{ comment.id }}"></a>)
추가
return redirect('{}#comment_{}'.format(
resolve_url('pybo:detail', question_id=comment.answer.question.id), comment.id))
파이보에 마크다운을 적용하기
pip install markdown
으로 마크다운을 설치
마크다운으로 작성한 문서를 HTML문서로 변환하기 위해서는 템플릿에서 사용할 마크다운 필터를 작성해야 함
import markdown
from django import template
from django.utils.safestring import mark_safe
@register.filter()
def mark(value):
extensions = ["nl2br", "fenced_code"]
return mark_safe(markdown.markdown(value, extensions=extensions))
mark 함수 추가 :markdown 모듈과 mark_safe함수를 이용하여 입력된 문자열을 HTML코드로 변환해 주는 필터함수
몇가지 확장기능 중 "nl2br"과 "fenced_code"를 사용
nl2br
은 줄바꿈 문자를<br>
로
참고 - https://python-markdown.github.io/extensions/
{% load pybo_filter %}
추가 -> mark 필터 사용할 수 있게
{% load pybo_filter %}
<div class="card-text">{{ question.content|mark }}</div>
<div class="card-text">{{ answer.content|mark }}</div>