6주차 5일 TIL

서정인·2022년 5월 27일
0

TIL

목록 보기
2/9

html 화면에 띄워주기

  • url - view - template 이어주기 (조금 길지만 하나씩 따라해보자!) 템플릿을 만들었으니 화면을 띄워볼까요~? 여기서 1주차 때 배웠던 장고의 동작 순서를 한번 더 살펴보도록 할게요!
    • 장고의 MVT 패턴

장고를 검색하면 MVT 패턴이라고 해요. 하나하나 다 외우지 않아도 되지만, 그림을 보면서 흐름을 파악하면 앞으로 개발을 하는 데에 많은 도움이 될 것이라고 자신합니다!

업로드중..

  • M (Model) = models.py
    - 데이터베이스의 모델 (ORM)
    - 저장되고 사용되는 데이터의 형태
    • T (Template) = templates폴더 내의 html
      • 사용자에게 보여지는 부분
      • 화면
    • V (View) = views.py
      • 실질적으로 프로그램이 동작하는 부분
      • url을 요청하고 응답하는 그 사이에 일어나는 '서비스'들이 존재하는 곳

template은 모두 작성 한 상태이니, view와 url을 작성 해 주어야 합니다. 조금 어려우니까 그림을 먼저 볼게요~!

  1. 사용자가 url 요청 → 크롬/사파리 등의 인터넷 브라우저
  2. mySpartaSns에 요청이 접수 → settings.py가 있는 가장 처음 작성한 앱의 urls.py
  3. 등록된 url을 찾기 → urls.py에 연결 된 앱에 생성 한 urls.py
  4. 해당 url에 등록 된 view를 찾기

회원가입 기능 만들기

  • 회원가입 페이지를 보여주는 url은 'sign-up'이고, 'GET'이라는 방식으로 화면을 보여주고 있어요!

가입정보를 입력하고 전송 하는 url은 동일하게 'sign-up'으로 할 것이지만 'POST'라는 방식으로 보내줄거에요!

user의 views.py sign_up_view에 POST 추가하기

user/views.py

def sign_up_view(request):
    if request.method == 'GET': # GET 메서드로 요청이 들어 올 경우
        return render(request, 'user/signup.html')
    elif request.method == 'POST': # POST 메서드로 요청이 들어 올 경우
         return ""

HTML에서 form태그 설정

<!-- 윗 부분 생략 -->
<div class="wrap">
    <h2 class="title-center"> 회원가입 </h2>
    <form class="form-area" method="post" action="/sign-up/">
        {% csrf_token %}
        <div class="form-group mt-2 mb-2">
            <label for="username">이름</label>
            <input type="text" class="form-control" id="username" name="username">
        </div>
        <div class="form-group mt-2 mb-2">
<!-- 아랫 부분 생략 -->

user의 views.py에서 전송되는 데이터 받아서 저장하기

from django.shortcuts import render, redirect
from .models import UserModel

def sign_up_view(request):
    if request.method == 'GET':
        return render(request, 'user/signup.html')
    elif request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)
        password2 = request.POST.get('password2', None)
        bio = request.POST.get('bio', None)

        if password != password2:
            return render(request, 'user/signup.html')
        else:
            new_user = UserModel()
            new_user.username = username
            new_user.password = password
            new_user.bio = bio
            new_user.save()
        return redirect('/sign-in')
profile
코딩공부

2개의 댓글

comment-user-thumbnail
2022년 6월 2일

모야 생각보다 굉장히 깔끔한데요 ?

1개의 답글