* 개념
django는 python의 프레임워크 중 하나이다.
java - spring
node - express
python - django
* 설치 및 실행
# 설치
sudo pip3 install django
# 버전확인
python -m django --version
# 프로젝트 만들기
mkdir [PROJECT_PATH]
cd [PROJECT_PATH]
# 프로젝트 생성
django-admin startproject [PROJECT_NAME] .
# 실행 - default port 8000
python manage.py runserver
# port
python manage.py runserver [PORT]
* 앱 만들기
django-admin startapp [APP_NAME]
아래 라우팅을 위해 myapp 폴더에 urls.py 파일을 생성한다.
* 라우팅
url.py 파일에 urlpatterns를 지켜서 만들어야한다.
include를 사용하면 해당 앱마다 라우팅을 지정할 수 있다.
# study/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('myapp.urls')) # inculde([APP_NAME].urls)
]
# myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.home),
path('create/', views.create),
path('read/<id>', views.read),
]
# myapp/viwes.py
import random
from django.shortcuts import render, HttpResponse
# Create your views here.
def home(request):
return HttpResponse('''
Hello World!
''');
def create(request):
return HttpResponse('<h1>Create</h1>' + str(random.random()));
def read(request, id):
return HttpResponse('Read ' + id);
* DB 연결
# 설치
pip install mysqlclient
# .env
DATABASE_HOST=localhost
DATABASE_USER=root
DATABASE_PASS=
DATABASE_NAME=test
# settings.py
...
from dotenv import load_dotenv
import os
load_dotenv()
...
INSTALLED_APPS = [
...
'myapp'
]
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.getenv('DATABASE_NAME'),
'HOST': os.getenv('DATABASE_HOST'),
'PORT': '3306',
'USER': os.getenv('DATABASE_USER'),
'PASSWORD': os.getenv('DATABASE_PASS'),
},
}
...
테이블 생성
# myapp/models.py
from django.db import models
# Create your models here.
class MyTable(models.Model):
id = models.AutoField(primary_key=True)
name = models.TextField()
age = models.IntegerField()
class Meta:
db_table = 'MyTable'
# myapp/serializers.py
from rest_framework import serializers
from myapp.models import MyTable
class MyTableSerializer(serializers.ModelSerializer):
id = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = MyTable
fields = '__all__'
# myapp/views.py
from rest_framework.decorators import api_view
from django.shortcuts import HttpResponse
from myapp.models import MyTable
from myapp.serializers import MyTableSerializer
# Create your views here.
@api_view(['GET'])
def read(request, id):
dataModel = MyTable.objects.all()
selectModel = MyTable.objects.filter(name = 'jun')
result1 = MyTableSerializer(dataModel, many=True)
print(result1.data)
result2 = MyTableSerializer(selectModel, many=True)
print(result2.data[0])
jun = result2.data[0]['name']
print(jun)
return HttpResponse('Read ' + id);
참고) 생활코딩 장고 강의
https://www.youtube.com/watch?v=pbKhn2ten9I&list=PLuHgQVnccGMDLp4GH-rgQhVKqqZawlNwG&index=1
'Server > Python' 카테고리의 다른 글
Python3) M1에 설치되어있는 파이썬 사용하기 (0) | 2023.03.08 |
---|