Django 23

Django 실습(8) RDB(관계형 데이터베이스) 만들어보기

RDB : Relational DataBase. 테이블을 통해 데이터 집합을 표현하는 방식의 데이터베이스. - 계층형 데이터베이스 (1:N) - 망형 데이터베이스 (N:M) 실습 tutorialdjango 프로젝트를 만들고, startapp blog후, settings.py를 수정해준다. DB 모델 설계 blog / models.py 에 모델 구현 구현 후 makemigrations, migrate 하기 from django.db import models from django.contrib.auth.models import User # User 모델을 import class Post(models.Model): title = models.CharField(max_length=100) content = mo..

Django 2023.10.17

Django 템플릿 필터

앞으로 settings.py 에 다음과 같이 코드를 수정한다. LANGUAGE_CODE = 'ko-kr' TIME_ZONE = 'Asia/Seoul' 템플릿 필터 : 템플릿에서 데이터를 형식화하고 변환 가능 만약에 블로그 게시물들을 아래와 같이 posts로 템플릿에 보낸다면, def postlist(request): posts = Post.objects.all() return render(request, 'blog/postlist.html', {'posts':posts}) 템플릿 필터는 이렇게 쓸 수 있다. {% for i in posts %} {{i.id}} {{i.title}} 대문자 : {{i.content|upper}} 소문자 : {{i.content|lower}} 줄바꿈안함 : {{i.conte..

Django 2023.10.17

Django CBV - 제네릭 뷰 (Generic View)

제네릭 뷰 : Django에서 제공하는 CBV(Class-Based View)로, 자주 쓰는 View가 미리 만들어져있다. 상속받아서 사용 공식 문서 : https://docs.djangoproject.com/en/4.2/ref/class-based-views/ Django The web framework for perfectionists with deadlines. docs.djangoproject.com Base views 뷰 클래스를 생성하고, 다른 제네릭 뷰의 부모 클래스가 되는 기본 제네릭 뷰 - View : 최상위 제네릭 뷰, 기본 뷰, Django view를 만드는데 필요한 기능 제공 - TemplateView : 템플릿이 주어지면 렌더링을 해주는 뷰 - RedirectView : URL이 ..

Django 2023.10.16

Django 실습(7) 클래스 기반 뷰 (Class-Based Views) 이용하기

그 전까지는 함수 기반 뷰를 이용해서 views.py를 만들었지만, 이제는 클래스 기반 뷰를 통해서 좀 더 쉽게 만들어보자. generic 클래스에 대한 실습 이제는 각 프로젝트마다 venv를 만들지않고 하나의 가상환경을 계속해서 쓰자. pip freeze > requirements.txt 를 이용해서 버전관리를 할 수 있다. 설치할때는 pip install -r requirements.txt 사용 그리고 .gitignore파일을 만들고 venv를 입력해서 가상환경은 무시하도록 한다. startproject를 하고, startapp으로 blog를 만들어서 클래스 기반 뷰를 사용해보자. tutorialdjango / urls.py from django.contrib import admin from djan..

Django 2023.10.16

Django 실습(6) Login 기능 구현하기

Django에서는 startproject를 했을 때 자동으로 추가되는 django.contrib.auth 앱을 이용하면 간단하게 구현할 수 있다. 실습 Django 프로젝트를 만들고 accounts 앱 추가, settings.py에 app추가, urls.py에 "accounts/" url 추가 accounts / urls.py 추가 from django.urls import path from . import views app_name = "accounts" urlpatterns = [ path('signup/', views.signup, name='signup'), path('login/', views.login, name='login'), path('logout/', views.logout, name=..

Django 2023.10.13

Django 실습(5) Form과 ModelForm 사용한 블로그

지난번엔 html파일에서 태그를 하나씩 직접 달아서 post로 보내는 방식으로 게시물을 생성했지만, 이번에는 장고에서 제공하는 Form과 ModelForm을 이용해서 좀 더 간단하고 효율적으로 처리할 수 있다. 역할 : Form 클래스의 데이터를 읽어서 HTML 입력폼을 알아서 만들어주고 유효성 검증 및 값 반환이 쉽다. Form과 ModelForm의 차이 : Form은 직접 필드를 정의하고 위젯 설정이 필요하지만, ModelForm은 지정된 Model로 부터 필드 정보를 읽고 자동으로 필드를 설정한다. 실습 지난번에 한 실습에서 파일들을 좀 수정하면서 진행 blog / models.py 수정 from django.db import models class Post(models.Model): title =..

Django 2023.10.12

Django ORM을 이용해서 DB CRUD 해보기

공식문서 : https://docs.djangoproject.com/en/4.2/ref/models/querysets/#django.db.models.query.QuerySet Django The web framework for perfectionists with deadlines. docs.djangoproject.com Django ORM : 우리가 만든 모델 클래스와 DB에 생성된 테이블을 자동으로 연관지어 주는 기술. python 문법을 통해서 DB를 조작할 수 있다. 실습(4)에서 만들어둔 모델과 DB를 이용해서 ORM 사용해보기. python manage.py shell blog / models.py 에서 Post 클래스 import 하기 >>> from blog.models import Po..

Django 2023.10.11

Django 실습(4) Model과 DB를 이용한 게시물 관리와 업로드

간단하게 startapp blog 만 하고 이미지를 업로드한 게시물들의 목록과 검색 기능을 구현한 index와 게시물의 상세 정보를 볼 수 있는 post와 게시글을 작성하고 파일을 업로드 하는 write를 구현해보자. 실습 여태 했던 실습 내용을 참고하여 여기까지 만들어서 runserver 했을 때 http://127.0.0.1:8000/blog, http://127.0.0.1:8000/blog/write, http://127.0.0.1:8000/blog/1 이 다 잘 실행되는지 확인. blog / models.py 에 DB 설계하기 아래 사이트를 참고 https://docs.djangoproject.com/en/4.2/ref/models/fields/ Django The web framework for..

Django 2023.10.11

Django 실습(3) Bootstrap 사용해서 블로그 만들고 꾸미기

Bootstrap : 웹페이지의 디자인을 손쉽게 만들 수 있게 도와주는 프레임워크 비슷한걸로 Talewind가 있다. 사용법 : 웹사이트 확인 https://getbootstrap.kr/ Bootstrap 강력하고 확장 가능하며 기능이 풍부한 프론트엔드 툴킷. Sass로 빌드 및 커스터마이징하고, 사전 빌드된 그리드 시스템 및 구성 요소를 활용하고, 강력한 JavaScript 플러그인으로 프로젝트에 생기 getbootstrap.kr CDN 방식이 설치 안해도 돼서 편한듯? Django에서 CSS를 사용하기 위해서는 static기능을 이용해서 css경로를 줘야한다. {% load static %} {% static 'STATIC_URL 이후의 경로' %} 부트스트랩 무료 템플릿을 다운받아서 지난번에 해본 ..

Django 2023.10.10

Django 실습(2) Templates 분리와 상속으로 블로그 만들기

templates안에 html파일들을 더 효율적으로 관리하기 위해서 각각 app안에 templates폴더를 만드는것이 아닌, BASE_DIR 에 templates폴더를 따로 만들어서 관리할 수 있다. 만약 mysite라는 프로젝트에 main이라는 앱과 blog라는 앱이 있다면, mysite / main / templates 와 mysite / blog / templates 가 아닌, mysite / templates / main , mysite / templates / blog 폴더를 만들어서 한곳에 관리를 한다. BASE_DIR : 프로젝트 최상위 폴더 ex) mysite 템플릿 태그 {{ 변수명 }} {% 템플릿 문법 %} 템플릿 상속 : 홈페이지를 조각내어 각각의 html로 관리하는 기법 부모 ht..

Django 2023.10.10