데이터를 추가할때마다 2가지를 진행해야함
1. 마이그레이션
python manage.py makemigrations
2. 반영되지 않은 마이그레이션 반영
python manage.py migrate
ctal + shift + p를 통해 sqlite를 확인(vscode sqlite가 존재해야함.)
(7방향에서 DB확인)
auto now
created_at = models.DateTimeField(auto_now_add=True) #추가될 때 업데이트
updated_at = models.DateTimeField(auto_now=True) #수정될 때 업데이트
ORM
객체 관계형 맵핑
MANAGER
MYMOEL.obiects.all()
python manage.py shell
requirements.txt에 사용된 라이브러리 정리하여 생성
pip freeze > requirements.txt
장고 쉘 (장고가 사용할 수 있는 모든 기능을 담은 쉘)
python manage.py shell_plus
확장프로그램
django-extensions : 장고 쉘에서 더 많은 기능 제공
"django_extensions", setting의 installed app에 추가
ipython : python shell에 여러가지 기능 더함. ex) 자동완성, 색상 등
db에 저장하는법
In [1]: Article.objects.all()
Out[1]: <QuerySet []>
In [2]: article=Article()
In [3]: article.title = '첫번쨰 내용'
In [4]: article.content = '첫번째 내용'
In [5]: Article.objects.all()
Out[5]: <QuerySet []>
In [6]: article.save()
In [7]: Article.objects.all()
Out[7]: <QuerySet [<Article: Article object (1)>]>
다른 방법 :
Article.objects.create(title='third title', content='마지막 방법임')
# save()가 필요하지 않음
수정하기
article = Article.objects.get(id=1)
article.title = 'updated title'
article.save()
삭제하기
article = Article.objects.get(id=2)
article.delete()
get
리소스 조회
>>DB에 변화를 주지 않는 요청
read
post
서버로 데이터를 전송할 때
>> DB에 변화를 주는 요청
create,update,delete 해당
POST로 요청할 떄
csrf를 잊지말것
<form action="{% url 'create' %}" method="POST">
{% csrf_token %} >>> 중요! 토큰을 통해 보안을 강화
<label for="">제목</label>
<input type="text" name="title"><br><br>
<label for="">내용</label>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
<button type="submit">저장</button>
</form>
삭제를 할 때 주의해야할 점
def delete(request, pk):
if request.method == "POST": <<요놈이 중요. 없으면 해당 url을 들어가기만 해도 삭제됨. 그래서 post로만 삭제되도록 조건문을 걸었음
article = Article.objects.get(pk=pk)
article.delete()
return redirect("articles")
return redirect("detail", pk)
'내일배움캠프 > Django' 카테고리의 다른 글
Django 7일차 (1) | 2024.04.19 |
---|---|
Django 5일차 (0) | 2024.04.17 |
Django 4일차 (1) | 2024.04.16 |
Django 2일차 (0) | 2024.04.12 |
Django 기초 1일차 (0) | 2024.04.08 |