인프런 커뮤니티 질문&답변

김영빈님의 프로필 이미지
김영빈

작성한 질문수

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트

커스텀 유저 지정 및 회원가입 구현

form의 메소드 // 7장이후의 강의내용에 대해 질문드립니다.

작성

·

136

0

안녕하세요? 늘 좋은 강의와 친절한 답변에 대해서 감사드립니다
1. form에 대해서 질문드립니다
 
def signup(request):
  if request.method == 'POST':
    form = SignupForm(request.POST)
    #signupform의 인스턴스 생성
    if form.is_valid():
      form.save()
      messages.success(request,"회원가입을 환영합니다")
     
      next_url=request.GET.get('next','/')
      #Get메소드로 들어왔을 때, next라는 인자가 있으면 그걸 가져오고, 없으면 그냥 /를 가져온나

      return redirect(next_url)
   
  else:
    form = SignupForm()

  return render(request,'accounts/signup_form.html',{'form':form})
위에서 보면
첫번째 if문에서 메소드가 post일 경우 내용을 처리해주는 것 같은데요
그 바로 밑에보면
request.Get.get이 있습니다.
GET메소드에서 next가 있으면 들고오고 없으면 /를 반환하라는 것 같은데, 어째서 가능한지 모르겠습니다 ㅠ
POST와 GET메소드 요청이 함께 올 수 있나요?
 
2. 7장 이후의 (즉 8장부터)강의 내용에 대해 질문드릴려고 합니다.
현재 7장을 들으면서 인스타그램을 만들어보고 잇습니다만 ㅠㅠ 허덕이는 제자신을 보니 아무래도 강의를 여러번 들으면서 다시 정리를 해야겠다는 생각이 많이 듭니다.
 
 
저는 4월초에 백엔드 개발자가 되기 위한 부트캠프를 들어가는데요, 그전까지 선생님의 강의로 장고를 좀 잘다듬고 싶은 마음이 있습니다. 다만 지금 제 수준을보니.. 시간이 많이 걸릴 것 같아 선택을 해야만 할 것 같습니다.ㅠㅠ
11장, 배포에 관한 부분은 부트캠프를 다니면서 나중에 들을 생각이구요
 
지금 고민이 되는 부분이 , 강의를 끝까지 완강을 하고 전체강의를 한두번 더들을지, 혹은 특정강까지만 강의를 듣고 그까지 3-4회정도 반복을 할까 고민중입니다.
 
8,9,10장의 내용이 백엔드 개발자로서, 프론트가 어떤식으로 돌아가는지 알 수있는 반드시 필요한 내용이라거나 혹은 어차피 DRF(뭔진 잘 모르겠지만 ㅠ)와 같은 기능을 장고개발자로서 반드시 쓸 수 밖에 없다면 , 앞의 내용(1~7장까지)에 조금 소홀해지더라도 10장까지 강의를 듣고 나서 2회정도 다시 강의를 들을 생각입니다.
하지만 그렇지 않다면 8장 정도까지만 강의를 듣고, 처음부터 8장정도까지 3-4회정도 반복을 하면서 좀 탄탄하게 다지고 싶은 마음이 큽니다.(선생님의 강의를 허덕이면서 따라가는 제자신을 보니, 기초적인 내용을 반복하고 싶다는 마음이 좀 가득합니다 ㅠㅠ)
 
서론이 너무 길었네요. 질문을 요약하면, 9-10장의 내용이 혹시 백엔드개발자로서 뗄수 없는 부분인가? 인듯 합니다.정답은 없는 부분일지도 모르지만, 선택을 위한 조언을 구합니다 ㅠㅠ
초조한 마음에 실례되는 질문을 드린게 아닐까 걱정이되네요.
늘 좋은 강의와 답변 감사합니다.
 
 
 
 
 

답변 1

0

이진석님의 프로필 이미지
이진석
지식공유자

안녕하세요.

HttpRequest.GET 객체는 QueryDict 타입의 객체로서 요청 method에 상관없이 요청 주소 뒤의 QueryString을 파싱한 데이터입니다. 아래와 같은 요청 주소는 GET/POST/PATCH/PUT/DELETE 등의 모든 요청에서 있을 수 있습니다. 그러니 HttpRequest.GET 객체는 모든 요청 method에서 있을 수 있습니다.

http://localhost:8000/accounts/signup/?next=/blog/

공식문서 : https://docs.djangoproject.com/en/4.0/ref/request-response/#django.http.HttpRequest.GET

HttpRequest.GET 과 HttpRequest.POST는 QueryDict 타입의 객체로서 dict의 확장타입입니다. 그러니 dict에서 지원하는 method를 모두 지원합니다.

d = {}
d['key']  # 사전 d에 'key' 키가 없으므로 KeyError가 발생합니다.
d.get('key')  # 사전 d에 'key' 키가 없으므로 None을 반환합니다.
d.get('key', 'other value')  # 사전 d에 'key' 키가 없으므로 'other value'를 반환합니다.

---

웹서비스의 서버가 웹페이지를 직접 서빙하는 목적으로 개발하기도 하고,

웹 API를 제공하는 목적으로 개발하기도 합니다. 개발할려는 서비스의 성격에 따라서 8장의 API가 필요하실 수도 있고 아니실 수도 있습니다. 장고 단독으로 웹만 구성하신다면 8장의 내용은 사용하시지 않을 수도 있습니다. 하지만 아마도 앱과 SPA웹을 연동하실 일이 많으시지 않을까 싶습니다.

9/10장에서는 장고와 리액트의 연동에 대해서 다루고 있습니다. 프로젝트에서 리액트를 직접 하시지 않더라도 그 연동에 대해서 이해하고 계시다면, 협업이 보다 매끄럽게 진행될 수 있기 때문입니다.

어떤 기술이든 꼭 필요하다라고 이야기하기는 힘들구요. 아시는 만큼 기술에 대한 이해도가 더 깊어지시겠죠.

화이팅입니다. :-)

김영빈님의 프로필 이미지
김영빈
질문자

감사합니다~

김영빈님의 프로필 이미지
김영빈

작성한 질문수

질문하기