mkdir [디렉토리 명]
ls // 디렉토리 확인
cd [디렉토리 명] // 디렉토리로 이동
python -m venv [가상환경 명]
cd [가상환경 명]
ls
이때, bin, pyvenv.cfg와 같은 파일이 생성되었다면 성공
cd bin
source ./activate
(가상환경명) 이렇게 앞에 뜨면 성공
bin 폴더에 진입하지 않고 바로 source ./bin/activate를 실행해도 됨
비활성화: deactivate
pip install django
python -m pip install --upgrade pip
python -m django --version
버전 확인했을 때 버전이 뜨면 성공
cd [루트 디렉토리]
mkdir [프로젝트 명]
cd [프로젝트 명]
django-admin startproject config .
ls
루트 디렉토리란 가장 위에서 설정했던 디렉토리 명
django-admin startproject config .
: 현재 디렉토리를 장고 프로젝트로 설정하고 필요한 설정 파일을 config 폴더에 설치
.는 현재 디렉토리를 장고 프로젝트로 설정하는 옵션
폴더명은 config가 꼭 아니어도 됨
ls 후 config, manage.py 파일이 생성되었다면 성공
cd config
ls
settings.py 등 장고 관련 파일이 생성되었다면 성공
cd ..
[프로젝트 폴더]로 이동
python manage.py runserver
control + c
개발자가 모델에 대한 변경점(예: 필드 추가, 모델 삭제 등)을 데이터베이스 스키마에 적용(propagate)하는 Django가 사용하는 방법
⇒ Django DB의 state을 바꾸기 위해 사용한다.
Django는 많은 기능을 자동으로 설정해주는데,
그 기능을 활용하기 위해선 DB의 state을 변경하는 작업이 필요하다.
⇒ 그 작업이 바로 Migration!
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py startapp 앱이름
settings.py Installed Apps에 앱 이름 추가해주기
'앱 이름'
혹은
'앱이름.apps.(apps.py에 있는 class 이름 (앱이름Config))'
from .models import House
@admin.register(House)
class HouseAdmin(admin.ModelAdmin):
pass
urls.py
파일 만들어주기from django.urls import path
from . import views
urlpatterns=[
path("", views.houses)
]
views.py
에 view 추가하기from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('houses/', include("houses.urls"))
]
pip install djangorestframework
settings.py INSTALLED_APPS에 "rest_framework"를 적어준다.
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
]
}
app 아래에 serilizers.py 파일 만들기
from rest_framework import serializers
from .models import House
class HouseSerializer(serializers.ModelSerializer):
class Meta:
model = House
fields = "__all__"
from django.db import models
class Review(models.Model):
"""리뷰 모델"""
review_id = models.BigAutoField(primary_key=True) # pk로 설정
created_time = models.DateField(auto_now_add=True)
content = models.TextField()
liked = models.PositiveIntegerField()
class Comments(models.Model):
"""리뷰에 달릴 댓글 모델"""
comments_id = models.BigAutoField(primary_key=True) # pk로 설정
created_time = models.DateField(auto_now_add=True)
content = models.TextField()
from .models import House
from rest_framework.views import APIView
from rest_framework.decorators import api_view
from rest_framework.response import Response
from .serializers import HouseSerializer
from django.http.response import HttpResponse
from django.shortcuts import render
from rest_framework import status
from django.http import Http404
from django.shortcuts import get_object_or_404
def getPk(md, pk):
primaryKey = md.objects.get(pk = pk)
return primaryKey
@api_view(["GET", "POST"])
def houses(request):
if request.method == "GET":
all_houses = House.objects.all()
serializer = HouseSerializer(all_houses, many=True)
return Response(serializer.data)
else:
serializer = HouseSerializer(data=request.data)
if serializer.is_valid():
new_house = serializer.save()
serializer = HouseSerializer(new_house)
return Response(serializer.data ,status=status.HTTP_201_CREATED)
return Response(serializer.errors ,status=status.HTTP_400_BAD_REQUEST)
@api_view()
def house(request, pk):
try:
house = getPk(House, pk)
except House.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
serializer = HouseSerializer(house)
return Response(serializer.data)
from .models import House2
from rest_framework.views import APIView
from rest_framework.response import Response
from .serializers import HouseSerializer
from django.http.response import HttpResponse
from django.shortcuts import render
from rest_framework import status
from django.http import Http404
from django.shortcuts import get_object_or_404
from rest_framework.viewsets import ModelViewSet
from .serializers import HouseSerializer
from django.core.paginator import Paginator
class HouseViewSet(ModelViewSet):
serializer_class = HouseSerializer
queryset = House2.objects.all()
from django.urls import path
from . import views
urlpatterns=[
path("", views.houses)
]
from rest_framework import serializers
from .models import House2
class HouseSerializer(serializers.ModelSerializer):
class Meta:
model = House2
fields = "__all__"
https://velog.io/@dbsrud11/Django-Python-m1-%ED%99%98%EA%B2%BD