Django 2주차

pjh_h·2022년 1월 21일
0

Django에 필요한 명령어를 익히고, 데이터베이스 연결과 사용하는 법을 알아보았다

사용자 모델을 만들고, 회원가입과 로그인 기능을 직접 만들었다

Django에서는 기본적으로 제공되는 기능들이 있어 좀 더 쉽게 만들수 있었다

$ django-admin startapp user
$ django-admin startapp tweet

위 명령어를 이용해 user앱과 tweet앱을 만들 수 있다
앱을 만들었으면 Django에게 알려주어야 하기 때문에 프로젝트의 setting.py에 installed_apps에 추가해준다

데이터베이스와 Django ORM
1. Django를 실행했다면 db.sqlite3가 생성된다
2. 파이참 우측에 Database라는 탭의 Data Source from Path에서 db.sqlite3를 선택해준다

ORM이란 데이터베이스를 하나의 객체(Object) 덩어리로 보고,
데이터베이스를 SQL언어가 아닌 클래스로 쉽게 표현 및 사용 할 수 있게 해준다

Django에서는 기본적으로 User모델을 제공한다
하지만 2주차에선 직접 만들어보았다

user의 models.py에

#user/models.py
from django.db import models


# Create your models here.
class UserModel(models.Model):
    class Meta:
        db_table = "my_user"

    username = models.CharField(max_length=20, null=False)
    password = models.CharField(max_length=256, null=False)
    bio = models.CharField(max_length=256, default='')
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

다음과 같은 코드를 입력해주었다
Django 모델 필드의 종류는 매우 많지만 간략하게는 다음과 같다
문자열 : CharField, TextField
날짜/시간: DateTimeField, DateField, TimeField
숫자 : IntegerField, FloatField
다른 테이블과 연관을 지어 줄 때 : ForeignKey

만든 모델을 데이터베이스에 넣기
방금 만든 User Model을 데이터베이스에 넣어주려면 명령어가 필요하다
1. 데이터베이스 변경을 알려주는 명령어 : makemigrations
= python manage.py makemigrations
2. 변경된 데이터베이스를 적용시켜주는 명령어 : migrate
= python manage.py migrate

Django Admin 기능
장고의 대표 기능 중 하나는 Admin이다
Admin 페이지에 접근하기 위해서는 Django에서 제공하는 super user를 만들어야 한다
1. super user를 만드는 명령어 : python manage.py createsuperuser
2. email과 password를 입력해주면 관리자가 만들어진다
3. admin 화면에 직접 만든 모델을 등록하려면 user앱의 admin.py에 아래 코드를 입력해준다

from django.contrib import admin
from .models import UserModel

# Register your models here.
admin.site.register(UserModel) # 이 코드가 나의 UserModel을 Admin에 추가 해 줍니다

사용자 관리와 로그인

url의 경로는 위 사진과 같다
1. 사용자가 url을 요청(chrome, safari 등의 인터넷 브라우저)
2. mySpartaSns에 요청이 접수 ➡ settings.py가 있는 가장 처음 작성한 앱의 urls.py
3. 등록된 url을 찾기 ➡ urls.py에 연결된 앱에 생성한 urls.py
4. 해당 url에 등록 된 view를 찾기

따라서 새로 생성된 앱인 user앱에 urls.py를 생성해준다
그리고 작성한 url을 연결해주기 위해 mySpartaSns의 urls.py의 urlpattern에 다음코드를 추가한다

path('', include('user.urls'))

위 코드는 'user앱의 urls.py에 연결시키겠다' 라고 선언해주는 코드
이후에 user앱의 views.py를 만들어준 뒤 user앱의 urls.py에서 연결해준다

회원가입 기능 만들기
1. user앱의 views.py sign_up_view에 POST추가하기
2. signup.html에서 form 태그 설정
3. user의 views.py에서 전송되는 데이터 받아서 저장하기
4. redirect 함수를 이용해서, 저장완료 되었다면 로그인 페이지로 이동하게 해준다

로그인 기능 만들기
1. user앱의 views.py에 로그인을 처리해줄 함수를 만든다. sign_in_view를 만들고 POST를 추가했다
2. signin.html에서 form 태그 속성을 넣었다
3. views.py의 sign_in_view함수에 전송되는 데이터를 받아 로그인 기능을 만든다
4. username과 password가 사용자의 것인지를 확인하고 session에 저장한다. 4번의 코드는 다음과 같다

# user/views.py
def sign_in_view(request):
    if request.method == 'POST':
        username = request.POST.get('username', None)
        password = request.POST.get('password', None)

        me = UserModel.objects.get(username=username)  # 사용자 불러오기
        if me.password == password:  # 저장된 사용자의 패스워드와 입력받은 패스워드 비교
            request.session['user'] = me.username  # 세션에 사용자 이름 저장
            return HttpResponse("로그인 성공!")
        else: # 로그인이 실패하면 다시 로그인 페이지를 보여주기
            return redirect('/sign-in')
    elif request.method == 'GET':
        return render(request, 'user/signin.html')

2주차 내용이 좀 복잡하다고 생각했는데 정리를 한번 하면서 차근차근 복습하니 이해가 잘 되었다
3주차를 진행하기 앞서 복습을 확실히 해서 이해를 하고 넘어가고 싶었다
Django는 이해를 하고 기초를 탄탄히하면서 프로젝트에 참여하고싶다
Django 화이팅🔥🔥🔥

profile
까짓거 한번 해보죠

0개의 댓글