TIL70. django CRUD 세션

Jaeyeon·2021년 3월 29일
0
post-thumbnail

저번주 금요일에 배웠던 django CRUD 세션을 리뷰하는 느낌으로 세션은 진행 되었다.
세션 진행: 경훈님

django 모델링하기

1. 가상환경 실행

conda activate 가상환경 이름

  • 버전 충돌 방지
  • 불필요한 라이브러리를 사용하지 않기 위해

2. 필요한 패키지 설치

  • pip install django
  • pip install mysqlclient : 장고와 mysql 연결

3. 프로젝트 생성

  • django-admin startproject 프로젝트이름

4. 앱 생성

  • python manage.py startapp 앱 이름

5. mysql에서 db만들기

mysql -u root -p로 접속 후
mysql> create database NAME character set utf8mb4 collate utf8mb4_general_ci;

6. settings.py 설정

  1. ALLOWED_HOSTS = ['*'] 모든 접속을 허용하겠다.
  2. INSTALLED_APPS와 MIDDLEWARE에도 어드민,auth 관련된 것 주석처리 = 우리가 직접 로그인 데이터를 관리하기 위해

  1. mysql과 django 연동을 한다.

7. urls.py 설정

admin과 연결된 from import와 url삭제

8. 지금까지 한 것을 python manage.py runserver로 돌려서 잘 되었는지 확인해보기

잘 되었으면 http 주소가 나온다.

9. settings.py에 있는 민감한 내용은 my_settings.py에 옮기기

settings.py에 모든 것을 넣어놓으면 해킹의 위험이 있기 때문에
manage.py와 같은 디렉토리에 my_settings.py를 만든 후 database와 secret key를 넣는다.
그리고 Settings.py에는 my_settings를 import 해온다.

my_settings.py

settings.py

중요한 정보들은
모두 my_settings.py에 이주시킨다.

10. settings.py/ INSTALLED_APPS에 앱이름을 꼭 추가

INSTALLED_APPS = [
    # 'django.contrib.admin',
    # 'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'product',
]

11. models.py 작성하기

여기서는 간단하게 메뉴만 작성해보았다.

from django.db import models


class Menu(models.Model):
    name = models.CharField(max_length=20)
    create_at = models.DateTimeField(auto_now_add = True)	# auto_now_add = auto_now_add =True 처음 생성을 할 때 시간을 체크해줌
    update_at = models.DateTimeField(auto_now = True)		# auto_now = True 업데이트 할 때마다 시간을 체크해줌
    
    class Meta:
        db_table = 'menus'					# mysql에 넘길때 테이블이름 설정

12. makemigrations와 migrate 하기

python manage.py makemigrations 앱 이름
python manage.py migrate 앱 이름

13. python.manage.py shell 에 들어가서 데이터 집어넣기

쉘에 들어가고 난 후 from ~ import ~를 꼭 해줘야 한다!

14. update는 Queryset형태에서만 반영된다.

filter는 Queryset형태로 묶여져 있어 update가 가능하지만

>>> Menu.objects.filter(id =1).update(name = '콜드브루')

get은 Object형태로 묶여져 있어 update가 불가능하다.

>>> Menu.objects.get(id =1).update(name = '콜드브루')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'Menu' object has no attribute 'update'

15. delete는 형태 QuerySet,Object 상관없이 반영된다.

profile
생각하는 개발자 되기

0개의 댓글