CS Activity/Likelion 11th

[멋쟁이사자처럼 11기] 4회차: Django 실습

Jenn28 2023. 3. 23. 19:12

Model

 

데이터베이스

- 관계형 데이터 베이스: 테이블

 

장고ORM

- SQL문을 안쓰고도 데이터 조작 및 관리 가능하게 함

 

Class와 Table

- Class = Table

 

models.py의 변경사항을 감지하여 파일로 생성:

python manage.py makemigrations

 

makemigrations에서 생성된 파일을 DB에 적용:

python manage.py migrate

 

admin 아이디/비번 설정:

python manage.py createsuperuser

 


 

models.py

from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField(max_length=100)
    created_at = models.DateTimeField(auto_now_add=True)
    introduce = models.TextField()

    def __str__(self):
        return self.title #제목 타이틀로 바꾸기

 

admin.py

from django.contrib import admin
from .models import *
# Register your models here.
admin.site.register(Blog)

 

views.py

from django.shortcuts import render
from .models import Blog
from django.http import HttpResponse

# Create your views here.
def blog(request):
    blog=Blog.objects.all()
    return HttpResponse(blog)

 

settings.py

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

 

urls.py (blog)

from django.urls import path
from . import views

urlpatterns = [
    path('', views.blog, name='blog'),
]

 

urls.py (session)

from django.contrib import admin
from django.urls import path, include #path 가져오기

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')), #blog path 추가해주기
]

 

0001_initial.py

# Generated by Django 4.1.7 on 2023-03-23 10:28

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Blog',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=100)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('introduce', models.TextField()),
            ],
        ),
    ]