전체 글 79

개발 일지 19 - html 메인 파일 수정

아무것도 모르는 상태에서 이 프로젝트를 실행했다. 그러다 보니 html구조가 뒤죽박죽으로 섞여있었다. body를 헤더 부분과 content부분으로 나누지도 않고 하나로 통합한 상태로 사용을 하고 있었고 content부분을 나누지도 않았으니 자연스레 content내부도 각 요소들이 쪼개지지 않은채 중구난방으로 사용이 되고 있었다. 다른 커뮤니티 사이트를 f12를 누르면서 html의 구조를 확인한 후 내 코드가 좀 잘 못되었구나 라는 사실을 깨닫고 수정에 들어갔다. 일단 body를 header부분과 content_body부분으로 크게 나누었다.   content_body내부에서 main_content로 한 번더 묶어주면서 margin값을 넣어주었다.main_content내부를 content와 sidebar로..

장고 2024.09.02

개발 일지 18 - 카테고리 별 분류

간단하게 카테고리를 1,2로 나누었다. 게시글을 나열하고 출력하는 부분은 다 구현을 했으니 값을 받아올때 카테고리 별로 나누어서 받아오면 된다고 생각했다.  category = request.GET.get('category','all') # 선택된 카테고리 가져오기 print(category) if category == 'all' or category == '': post_list = Post_information.objects.all().annotate(like_count=Count('like_users')).order_by('-created_at')#좋아요도 표시 else: post_list = Post_information.objects.filter(ca..

장고 2024.09.01

개발 일지 17 - CSS 폰트 추가 + 배포 공부

사이트 로그 글씨가 밋밋해서 폰트를 추가하는 방법을 찾아보았다. google font라는 사이트를 찾아가서 사용을 하면된다.  https://fonts.google.com/?lang=ko_Kore Browse Fonts - Google FontsMaking the web more beautiful, fast, and open through great typographyfonts.google.com 원하는 폰트를 선택하고 get font를 클릭한 후  get embed code에 들어가면 코드가 쫙 나열이 되어있을 것이다.  그리고 아래와 같이 코드를 추가해주면된다.    html파일의 head부분에 넣어주고 폰트를 사용하고 싶은 문구에 아래 코드와 같이 사용을 해주면된다. 폰트..

장고 2024.08.31

개발일지 16 - 베스트 댓글 만들기

댓글하고 대댓글의 데이터베이스가 나누어져 있어서 따로 구분을 해서 코드를 구현해야 한다. comment_reply DB에서 값을 좀 더 편하게 가져올 수 있게 함수를 하나 만들었다. def get_all_replies(comment): all_replies = [] direct_replies = comment.replies.all() for reply in direct_replies: all_replies.append(reply) all_replies.extend(get_all_replies(reply)) print(all_replies,'alll') return all_replies comment.replies.all()을 호출하여..

장고 2024.08.30

개발 일지 15 - 게시글 좋아요 순으로 정렬 + 페이지 바뀔 때 정렬 유지

어제 게시글을 조회순으로 정렬하던 post_sort함수를 더 보완했다.  if sort_option == 'views_desc': print('-view') posts = Post_information.objects.all().annotate(like_count=Count('like_users')).order_by('-views') elif sort_option == 'views_asc': print("view") posts = Post_information.objects.all().annotate(like_count=Count('like_users')).order_by('views') elif sort_option == 'likes_desc'..

장고 2024.08.29

개발 일지 14 - 게시글 조회수로 정렬

get 과 post의 차이를 알아야 한다. GET 요청 : 주로 데이터를 요청하고 조회할 때 사용된다. URL에 쿼리 파라미터를 포함해 서버에 요청을 보내고, 서버는 이에 맞는 데이터를 반환한다. 예> 정렬, 검색, 필터링 등의 작업은 주로 GET 요청으로 처리된다. POST 요청: 주로 서버에 데이터를 제출하거나 변경할 때 사용된다. 예> 폼 데이터를 서버에 제출하여 새로운 데이터를 생성하거나 기존 데이터를 수정할 때 사용됩니다. 처음에 post를 사용하려다가 챗 GPT와 구글링을 해본 결과 GET을 사용하는게 더 적합하다는 것을 알았다.   ..

장고 2024.08.28

개발 일지 12 - 게시판 좋아요 기능

원래는 Like DB를 사용을 해서 코드를 구현을 하려고 했다.  하지만 좋아요 기능은 조건이 필요하다. 1. 한 계정이 한 번 누르면 올라가지만 한 번 더 누르면 증가해서는 안 된다. 2. 좋아요 버튼을 한 번 더 누를 시에 증가가 아닌 감소를 하게 만든다. 위의 조건을 만족을 시켜주기 위해 좋은 기능이 없을까 하고 구글링을 해본 결과 다대다 관계라는 것을 알게 되었다. 한 명의 사용자가 여러 개의 게시물을 좋아할 수 있고, 한 개의 게시물이 여러 명의 사용자에 의해 좋아질 수 있는 경우라는 것이다. 그리고 그럴 때  ManyToManyField를 사용하여 구현을 할 수 있다고 하길래 DB를 수정을 해주었다  기존 Post_information DB에 아래 코드를 추가해주었다.  like_users =..

장고 2024.08.26

개발 일지 11 - 댓글 수정, 삭제 기능 추가

구현을 하기 전에 그림판에 흐름도를 작성을 한 뒤에 코딩을 진행했더니 훨씬 수월했다.   간단하게 설명을 하자면 탬플릿에서 수정 버튼을 누른 뒤에 view.py로 넘어가서 댓글의 위치를 알아내고 수정을 한 뒤에 저장까지 해주는 기능이다. save_comment라는 함수를 하나 더 만들까 하다가 만들지 않아도 되었다. {% if comment.author == user %} {% csrf_token %} 삭제 수정 {% csrf_token %} ..

장고 2024.08.25

개발 일지 10 - 댓글 기능 문제 해결

count=Comment.objects.all().count() print(count) if int(parent_comment_id)  위의 코드에 문제가 있었다. 게시글을 한 번 삭제하고 나서 카운트되는 개수가 꼬이면서 해당 게시물에 대댓글이 달리는 것이 아니라 아예 다른 게시물에 대댓글이 달리는 상황이 벌어졌다.도저히 문제가 해결이 되지 않아서 다른 사람들이 한 것을 찾아보니 다른 사람들은 comment DB를 한 개만 만들어서 대댓글 기능까지 구현을 하고 있다는 사실을 알았다.  거기서 내가 첫 단추부터 잘 못 꿰었음을 알았다.지금 문제는 comment_template가 계속 반복되면서 댓글의 위치 아이디를 만들어낸다.그 아이디를 받아오는데 첫 ..

장고 2024.08.24