본문 바로가기

WEB/Django10

[Django] FBV와 CBV view를 작성하는 방법을 크게 FBV(Function based view)와 CBV(Class based view)가 있다. 지금까지 함수 기반으로 view 파일을 작성한 것이다. 지금부터는 CBV를 살펴보자. 장고가 기본적으로 많이 사용하는 것들을 class로 구현해놓았고, 우리는 복잡한 코드 없이도 이것을 사용하여 view 파일을 손쉽게 만들 수 있었다. 하지만 CBV가 자동화가 되고 자유도가 떨어지는 만큼 우리는 프로젝트에 맞는 것을 사용하는 것이 좋다. CBV는 제네릭 뷰라고도 불린다. # c앱에 views.py from django.shortcuts import render from django.views.generic import ListView from b.models import Blog.. 2022. 4. 10.
[Django] url 개선 djangomtv/templates/index.html에 a 태그 추가 {% extends 'base.html' %} {% load static %} {% block body %} {% csrf_token %} 이동 {% endblock body %} djangomtv/djangomtv/urls.py에 a.urls 추가 from django.contrib import admin from django.urls import path, include # from main import views # main의 views.py에서 모듈 가져다 사용할 거야! # from a import views # from b import views # from c import views from main.views import.. 2022. 4. 10.
[Django] ORM, Django Shell, QuerySet 1. DATA from django.db import models class Notice(models.Model): title = models.CharField(max_length=100) likeCount = models.IntegerField() # 좋아요수 viewCount= models.IntegerField() # 뷰수 contents= models.TextField() # 내용 def __str__(self): return f'젬목 : {self.title}, 좋아요 수 : {self.likeCount}, 조회수 : {self.viewCount}' 현재 data 2. ORM ORM이란 우리가 만든 모델 클래스와 DB에 생성된 테이블을 자동으로 연관지어 주는 기술로 우리가 DB를 직접 조작할 필.. 2022. 4. 10.
[Django] template language 1. 템플릿 태그 템플릿 태그는 기존 Python에 있는 syntex에 해당하는 부분이다. if, else, for 구문과 같은 것을 사용할 수 있고, 추가로 확장 syntex를 (extends, block, include, etc) 사용할 수 있다. 중괄호 ( { } )와 퍼센트 ( % )를 조합하여 사용한다. {% 문법 %} 2. 템플릿 변수 템플릿 변수는 render 함수나 JsonResponse 함수로 데이터를 전달 받아 html 파일 안에서 호출되는 파이썬의 딕셔너리형 변수이다. 중괄호 2개를 사용한다. {{ 변수 }} 3. 템플릿 필터 템플릿 필터는 변수 값을 변환시켜 출력하기 위한 옵션이다. 템플릿 변수 옆에 파이프( | )를 사용한다. {{ 변수 | 옵션 }} ▫️ main > urls.p.. 2022. 4. 10.
[Django] Django 구조와 MTV 장고의 구조와 MVT 패턴 현재 폴더 구성 트리 이미지 수정한 순서는 urls.py > views.py > index.html 맨 위의 상위 폴더(mysite)에 main(+a, b, c, d) 앱을 만들었다. main > views.py main > templates > main > index.html ▪️프로젝트 동작 순서 처음 사용자가 들어오면 해당 프로젝트의 urls.py를 참고해서 어느 앱의 어디로 연결될지 판단한다. main의 index로 이동해라! 라는 코드가 있었다면 main안에 views.py에 index가 선언되어 있는지 보고 그 index를 따라가는 구조이다. 현재 프로젝트는 index.html로 연결되어 보여진다. 사용자가 데이터베이스에서 데이터를 읽어와야 한다면 model.py에 .. 2022. 4. 10.
[Django] admin 페이지에 Notice 등록하기 admin ▪️ djangomtv/main/admin.py 에 Notice 등록하기 from django.contrib import admin from .models import Notice # Register your models here. admin.site.register(Notice) ▪️ 서버 구동 후 Notices 생성된 것 확인 ▪️ Notices 추가 ▪️ Notice object로 저장되는 이유? djangomtv/main/models.py 에서 어떤 값이 Notice를 대표하는 제목인지 명시해주지 않아서! from django.db import models # Create your models here. class Notice(models.Model): # 클래스 작성시 변수만 지정하면.. 2022. 4. 10.