inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

Mixin 소개 및 Commentapp 구현

models.py에서 서버단에서 확인한다는 의미와 create.html관련 질문 드리겠습니다.

162

퀀텀코더

작성한 질문수 37

0

models.py에서 모델을 설계할때

전 강의서부터, 

어떤 필드들은 foms.py에서 메타클래스로 관리를 하고

어떤 필드들은 서버단에서 관리를 한다고 하시는데...

 잘 와닿지 않아서요..ㅜㅜ

그 이유와 목적을 여쭤볼 수 있을까요..? 

2.

그리고 create.html에서 히든인풋을 만들어 놓는 이유도 

여쭤볼 수 있을까요???

<input type="hidden" name="article_pk" value="">

저 부분인데 설명하시기를

"히든이라는 타입을 가진 인풋을 만들면 나중에 

article_pk, 현재 article의 pk가 무엇인가 를 나중에

value값을 통해서 넘겨줄거고, 그거를 서버에서 받아서 comment를 만들때 완성할겁니다."

라고 하셨고, 추후에 article/detail.html에서

with article=target_article %} 을 통해

create.html안에서 변수를 쓸수 있게 된다고 하셨습니다.

그리고 value = {{ article.pk }} 를 해주셔서

"숨겨서 보내는 article.pk라는 밸류에 article.pk를 담아서 서버로 보낸다"라고 하셨는데 무슨말인지 전혀 모르겠네요...

숨겨서 보내는 건 어떤 의미가 있고, 왜 이렇게 하는지

설명 부탁드려도 될까요?

python docker django

답변 1

0

Hyong Sok Park

안녕하세요.
질문 확인했습니다.


1. 특정 필드는 서버단에서 관리하는 이유.

예를 들어서, 게시글을 작성한다고 생각하겠습니다.
그러면 저희가 models.py 파일 내부에 작성한 게시글 모델에 있는 정보는
제목, 이미지, 작성자, 내용 정도죠.

물론 다른 필드도 있긴 하지만 상관없는 내용이기 때문에 제외하겠습니다.

그렇다면 제목, 대표 이미지, 내용은 게시글을 작성하는 유저로부터 입력을 받아야 하는것이 맞습니다.
그런데 작성자가 누구인지도 작성자로부터 입력을 받아야 할까요?

작성자가 물론 본인이다 라고 작성할 수도 있겠지만,
A라는 유저가 게시글을 작성했는데, 작성자란에 B 유저라고 작성하면 어떻게 될까요?
물론 문제가 있겠죠?

그렇기 때문에 작성자가 누구인지에 대한 내용은 유저에게 입력을 받지 않고,
서버에서 직접 게시글 작성요청을 보낸 유저가 누구인지 식별하고,
해당 게시글의 작성자를 설정하겠다는 것입니다.

요지는, 유저에게 입력을 받아야하는 내용과,
유저에게 입력을 받으면 문제가 될 소지가 있는 내용이 있다는 것이고,
그런 내용을 분리하여 관리하는 것입니다.


2. create.html 에서 히든 인풋을 만들어놓는 이유

이 내용도 위의 내용과 비슷합니다.

댓글 모델에 저희가 작성한 내용이 무엇인가요?
댓글이 달린 게시글, 작성자, 작성시간, 내용 이정도입니다.

작성시간은 자동으로 생성되기 때문에 상관이 없고,
작성자는 1번 답변을 드린것처럼 서버에서 유저를 식별할 것입니다.

그럼 나머지 2개가 남았네요.
댓글 내용과 댓글이 달린 게시글입니다.

댓글 내용은 그냥 그대로 유저에게 입력받으면 됩니다.

그런데 댓글이 달린 게시글은 어떻게 해야할까요?

물론 이 값도 서버에서 처리를 하는 방법도 있습니다.
하지만 제 강좌에서는 조금 복잡하게 하기보다는,
간단하게 html 단에서 처리하려고 한거죠.

그래서 html form 내부에 추가적인 input 을 넣었습니다.
그런데, 이 input 에 유저가 입력할 필요가 있을까요?

당연히 해당 게시글에 댓글을 달았기 때문에,
해당 input 에는 지금 댓글을 쓰고 있는 게시글의 정보가 들어가야 합니다.

그렇기 때문에 해당 내용은 유저가 입력할 필요가 없기 때문에 숨기고(hidden),
들어가는 내용 게시글을 식별할수 있는 정보(article.pk) 가 들어가는 겁니다.

답변이 도움이 되셨으면 좋겠네요.
감사합니다-

0

장진서

저도 관련해 궁금한게 있습니다.

물론 댓글 비활성화 article인데 comment를 만드려고 하는 위변조는 위 form_valid로 예방하지 못하겠지만,

commentapp/view.py에 form_valid 를 통해 comment 생성을 시도하는 사용자가 writer가 맞는지 그리고 article_pk값이 유효한지 점검(validation)하여  클라이어트에서의 값 위변조를 1차적으로 막을 수 있는 것 맞나요?

 

강의에 나왔던 js 파일이 깃허브에 없습니다

1

79

1

모바일 디버깅, 반응형 레이아웃 4분48초 질문

0

57

1

decorator 관련질문입니다.

0

63

1

PasswordChangeView

0

104

2

로그아웃뷰 작동 관련 (2025년 3월)

1

138

1

실행에러질문

0

159

1

@login_required 데코레이터 사용시 리다이렉트는 어디서 참조하여 설정을 하는걸까요?

0

116

1

CacheBackend 관련 에러

0

181

1

21강 CreateView를 통한 회원가입 구현 질문

0

325

1

53강 disallowedhost

0

346

2

502 Bad Gateway

0

474

0

mariadb 접근권한 오류

0

545

1

logout 후 빈 화면으로 이동합니다 ㅠㅠ

0

461

2

로그아웃 후 빈 화면으로 이동

0

333

1

서버 운영 관련 질문 드립니다.(Unable to retirve...)

0

232

1

static/base.css파일을 인식을 못합니다

0

381

1

안녕하세요 19강 디버깅 설정 질문있습니다.

0

291

1

프로필 update편 질문있습니다.

0

380

1

수업질문

0

395

1

COOP error

0

531

1

61강 Dockerfile error

0

598

1

static안에 base.css 에서 정의한 클래스가 적용되지 않습니다.

0

491

1

static 파일 중 jpg 파일만 로드 불가

0

419

1

58강 static 파일 적용 안됨

0

547

1