코딩,해볼까

04.11. HoIT! : Django 팀 과제 진행 본문

Back/TIL

04.11. HoIT! : Django 팀 과제 진행

떠굥 2023. 4. 11. 22:29

 

0.  팀 과제 정보요약

HoIT Repository

IT 관련 최신 소식을 주제로 다양한 포스팅을 공유하는 뉴스피드 웹 제작.

+ 기본 기능 충족 후 데이터 크롤링 진행 예정

 

💙 나의 역할 : 게시글 파트의 views 를 담당 

 

 

 


1.  문제점

 

 

 

 


2. 시행착오

자꾸 까먹는데 강의밖에 돌려볼 수 없는 나 자신... 먼저 팀 과제를 진행하면서 장고 강의를 다시 들으며 요약하였다.

 

3강. 게시글 쓰기, 읽기와 삭제의 핵심!
같은 url이더라도 접근하는 방식(Get과 Post) 에 따라서 기능이 달라질 수 있다. 

 

POST 📩 = 우리가 작성을 한 후에 버튼을 눌러 보낸다.

글 작성 후 엔터 > 서버로 데이터를 보낸다.

 

GET 👀 = 우리가 데이터를 본다. 

우리가 보는 화면. 해당 url 로 요청한 화면

 

3강. 게시글 쓰기, 읽기 순서

1) HTML 구성

POST로 이제 /주소/ 이라는 url로 보내준다는 form 설정

form에서 어떤 정보를 넘겨줄지 확인!

 

<!-- action, method, csrf_token -->

<form action="/주소/" method="해당 메소드">

	{% csrf_ token %}
    
    <div>내용</div>
    
    <button>버튼</button>
    
</form>

 

2) views.py 구성

해당 url의 정보가 적힌 urls.py에서 views.함수를 따라간다.

form에서 넘겨주는 정보에 대해 작성!

 

from .models import 모델이름

if request.method == 'POST':

	user = request.user # 전체 user 가져오기
    
    나의게시물(my_feed) = 모델이름()
    
    나의게시물.auther = user
    
    나의게시물.content = request.POST.get('form에 있는 name="" 입력','')
    
    나의게시물.save()
    
    return redirect('/주소')

 

3) http에서 form에 값을 입력하고 버튼을 눌렀지만 변화가 없다. 대신 데이터베이스에 변화가 있는지 살펴봤다.

게시물은 db연결만 되어있다면 잘 저장이 된다. -- 글쓰기 완료 --

 

4) 이제 위에서 데이터베이스에 들어간 게시물이 바깥으로 보여질 수 있도록 셋팅한다.

로그인 된 유저만 이동할 수 있는 html 설정한 것이다.

 

user = request.user.is_authenticated 

# 사용자가 로그인 되어 있는가? 인증된 사용자가 있는가 확인

if user:

	return render(request, '이동할 html 경로')
    
else:

	return redirect('돌아갈 html 경로')

 

if의 사이에 아래 코드를 추가한다.

 

# 모든 데이터를 불러와서 최신순으로 정렬하여 출력한다.

모든게시물(all_feed) = 모델.objects.all().order_by('-created_at')

# 생성 시간을 역순으로 정렬할 수 있게 -를 created_at 에 붙여줬다.

return render(request, '주소', {'feed':all_feed}) # 화면에 넘겨주기 위해 추가.

 

5) html을 수정한다.

    {% for tw in tweet %}
        <div class="col-md-12 mb-2">
            <div class="card">
                <div class="card-body">
                    <div class="media">
                        <div class="media-body">
                            <h5 class="mt-0">{{ tw.content }}</h5>
                        </div>
                        <div style="text-align: right">
                            <span style="font-size: small">{{ tw.author.username }}-{{ tw.created_at|timesince }} 전</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    {% endfor %}

 

ctrl + alt + L

command + option + L


3. 해결방법

 

 

 

 


4. 알게된 점

 

 

 

 

 

 

Comments