해야할 일
기능
- 모집글 추가 함수 method로 post / get인지 구분하여 if문으로 제어하기 ✔️
(views.py/room_create_post - form action을 통해 받은 데이트를 객체에 넣어 저장한 다음 메인 화면으로 redirect 하기 내용이 있어야 post로 갈 수 있음)
- 검색 기능 구현하기
- 게시글 페이지 숫자 범위 지정하기
- 글쓰기 부분 디테일 ex) 제목 입력하세요 ✔️
개인
- 14일 일지 수정(완)
- core 에 있는 모델 다른 앱으로 이동시키기 (생각 없이 몰빵함...)
- 내비게이션바 와 글쓰기 버튼 스크롤 내려도 고정시키기
- requset.POST.get("oo', '') / requset.POST.get("oo', None) 공부 ✔️
- Posting = Posting() 했을 때 왜 오류가 난건지 정리 ✔️
- Q 함수 / from django.db.models import Q
☝🏻 글 쓰기 기능 수정하기
# core/views.py
from django.shortcuts import render, redirect
from .models import Posting
def room_add(request):
return render(request, 'home.html')
수정 전 : 메인 페이지로만 render
수정 후 :
- method로 post / get인지 구분하여 if문으로 제어해주기
post일 경우
- form action을 통해 받은 데이터를 post객체에 넣어주고
- post 방식으로 입력 받은 데이터를 room_add 뷰로 보낸다
- (if) post 객체에 저장한 데이터를 save() 메서드로 데이터베이스에 저장하고 다시 메인페이지로 redirect해주기
- (else) 데이터를 받지 못한 경우 에러 메세지 띄우기
get일 경우
- 글 쓰기 페이지로 render
# core/views.py
from django.shortcuts import render, redirect
from .models import Posting
def room_add(request):
if request.method == 'POST': # post요청일 경우 if문 실행
title = request.POST.get('title', None)
sub_title = request.POST.get('sub_title', None)
content = request.POST.get('content', None)
# 입력 하지 않았을 경우 에러메세지 띄우기
if not title:
return render(request, 'room_add.html', {"error" : "제목을 입력 해주세요"})
if not sub_title:
return render(request, 'room_add.html', {"error" : "부제목을 입력 해주세요"})
if not content:
return render(request, 'room_add.html', {"error" : "내용을 입력 해주세요"})
if (title and sub_title and content):
PostingObj = Posting()
PostingObj.title = title
PostingObj.sub_title = sub_title
PostingObj.content = content
PostingObj.save() #저장
return redirect('home')
else:
return render(request, 'room_add.html', {"error" : "에러발생 모든 내용을 입력 해주세요"})
if request.method == 'GET':
return render(request, 'room_add.html')
<궁금한 점 1>
request.POST.get('oo', None) 과 request.POST['oo']의 차이점
request.POST는 request의 POST 값들을 딕셔너리 형태로 반환해주는데
딕셔너리 ['key'] 을 이용하면 'key' 에 해당하는 값을 리턴해주는데 존재하지 않을 경우 keyerror 를 발생시킨다고 함
딕셔너리에서 특정 key 의 값을 얻는 다른 방법으로 .get('key')을 이용하면 존재하지 않은 key일 경우 None을 반환하는 차이점이 있음
key 값이 없을 경우 default 값을 설정해줄 수 있는데 .get('key',None) 이나 .get('key', '' ) 와 같은 방식으로 쓰면 된다
ㅊㅊ -> https://cjh5414.github.io/django-keyerror/
<궁금한 점 2>
PostingObj = Posting() 는 무슨 역할일까
models.py 에 Posting 객체를가져와 PostingObj 객체를 만들어주는 역할
PostingObj.title = title
PostingObj의 title에 title = request.POST.get('title', None)
☝🏻 검색 기능 추가하기
- 함수 Q 이용하여 검색 기능 구현하기
쿼리 자체를 객체로 다룰 수 있게 하는 클래스
모델 클래스 내에 filter(), get() 등 쿼리셋(전달받은 모델의 객체목록), 인스턴스(설계도(클래스)를 통해서 구현해야할 대상(객체)이 실제로 구현된 구체적인 실체)를 반환하는 메서드 내의 옵션(쿼리 조건문)을 동일하게 받는다
ㅊㅊ ->https://brownbears.tistory.com/63
'FrameWork > Django' 카테고리의 다른 글
7월 19일(화) (0) | 2022.07.20 |
---|---|
7월 18일(월) (0) | 2022.07.19 |
7월 14일(목) 검색바 추가(기능x)/글쓰기 추가(기능x)/메인페이지에 글목록 가져오기 (0) | 2022.07.14 |
7월 13일(수) 포스팅 모델/admin/view (0) | 2022.07.14 |
7월 12일(화) 점프투파이썬 클래스 공부/커스텀 유저 회원가입 (0) | 2022.07.13 |