Model Relationship Fields포스팅과 댓글, 포스팅과 글쓴이, 포스팅과 카테고리 등의 정보를 RDBMS (관계형 데이터베이스, Relational Database management System)에 저장하기 위해서는, Relation에 대한 이해가 필요 관계가 있는 Record끼지 서로 연결(Link) 데이터베이스 정규화 • 정규화 : RDBMS 설꼐에서 중복을 최소화하게 데이터를 구조화하는 프로세스• 충분히 정규화하지 않는다면, 중복 정보가 복수 개의 Row/Column에 혼재 : Record 갱신/삭제 시에 관련 Row/Column에 대해서 처리되지 않을 경우, 논리적 모순 발생• 경우에 따라 비정규화 과정이 필요 1:N - 포스팅과 댓글# blog/models.py from djan..
HTTP Status Code 웹서버는 적절한 상태코드로서 응답해야한다.대표적 HTTP 응답 상태 코드• 200 : 성공. 서버가 요청을 잘 처리했다. (OK)• 302 : 임시 URL로 이동했다. (Redirect)• 404 : 서버가 요청한 페이지를 찾을 수 없음. (Not Found)• 500 : 서버 오류 발생 (Server Error) "GET /blog/ HTTP/1.1" 200 100069GET : GET방식으로 요청 (GET,POST)/blog : 어떤 URLHTTP/1.1 : 프로토콜200 : 응답 코드100069 : 응답 사이즈 200응답 예제from django.http import HttpResponse, JsonResponsefrom django.shortcuts import re..
Model Manager- 데이터베이스 질의 인터페이스를 제공- 디폴트 Manager 로서 ModelCls.objects 가 제공ModelCls.objects.all() # 특정 모델의 전체 데이터 조회ModelCls.objects.all().order_by('-id')[:10] # 특정 모델의 최근 10개 데이터 조회 , order_by절을 통해 id필드기준으로 정렬ModelCls.objects.create(title="New Title") # 특정 모델의 새 Row 저장 1. QuerySet- SQL 을 생성해주는 인터페이스- Model Manager 를 통해, 해당 Model 에 대한 QuerySet 을 획득- Post.objects.all() 는 "SELECT * FROM post;" 와 같은 S..
테이블 생성시 지속적으로 구문 에러가 발생하였다.CREATE TABLE test_tables ( id int(10) NOT NULL AUTO_INCREMENT, name CHAR(10) NOT NULL, range int(10) NOT NULL DEFAULT '0', PRIMARY KEY (id)); 원인은 range가 예약어 이기 때문에 escape처리해야 한다.CREATE TABLE test_tables ( id int(10) NOT NULL AUTO_INCREMENT, name CHAR(10) NOT NULL, `range` int(10) NOT NULL DEFAULT '0', PRIMARY KEY (id)); `range` 를 묶어 처리하니 정상적으로 생성되었다.
Django Admin- staff/superuser 계정에 한해 접근 가능- 모델 클래스만 등록하면, 조회/추가/수정/삭제 웹 인터페이스가 제공- 장고가 제공하는 기본 앱에서 확인 가능 함 INSTALLED_APPS = [ 'django.contrib.admin',] ex) 맛집 등록서비스 관리자가 어드민 페이지를 통해 기본 포맷과 인터페이스를 지정하고, 이후 사용자들에게 사용하도록 만들수 있다. # Model Admin 등록법 1from django.contrib import adminfrom blog.models import Post admin.site.register(Post) # 기본 ModelAdmin으로 등록 # Model Admin 등록법 2- admin.ModelAdmin을 상속받아 어드..
Migrations• django-south 프로젝트가 킥스타터 펀딩 (£17,952, 507 Backers)을 통해, Django 1.7에 포함• 모델 변경내역 히스토리 관리• 모델의 변경내역을 Database Schema (데이터베이스 데이터 구조)로 반영시키는 효율적인 방법을 제공 마이그레이션 관련 명령어> python3 manage.py makemigrations # 마이그레이션 파일 생성> python3 manage.py migrate # 마이그레이션 적용> python3 manage.py showmigrations # 마이그레이션 적용 현황> python3 manage.py sqlmigrate # 지정 마이그레이션의 SQL 내역 마이그레이션 파일 생성 및 적용1. 마이그레이션 파일 (초안) 생..
Model- View 함수에서 Database에 작업을 요청할 때 SQL 구문이 필요 SQL (Structured Query Language)• Query : 정보 수집에 대한 요청에 쓰이는 컴퓨터 언어• SQL : 관계형 데이터베이스 관리 시스템 (Relational Database Management System) 의 데이터를 관리 위한 프로그래밍 언어• RDBMS 종류 : PostgreSQL, MySQL, MariaDB 등• 장고 모델은 RDBMS만을 지원• 장고 모델을 통해 SQL을 생성/실행 Django Model• Django 내장 ORM• SQL을 직접 작성하지 않아도, 장고 모델을 통해 데이터베이스로의 접근 (조회/추가/수정/삭제)• (중요) SQL을 몰라도 된다는 것은 아님. 최소한 내가..
View (함수)- URLConf에 매핑된 Callable Object (호출가능한 개체)- 파이썬에는 함수 이외에도 다양한 호출 가능한 객체가 존재한다.- 첫번쨰 인자로 무조건 httprequest 인스턴스를 받는다. HttpRequest- 필히 HttpResponse 인스턴스를 리턴하다.- 크게 Function Based View(함수 기반 뷰 FBV), Class Base View(클레스 기반 뷰 CBV)로 구분 된다. 1. FBVFBV(Function Base View) 예시1. 직접 html 소스를 작성하여 HTML형식 response (from django.http import HttpResponse)2. 템플릿 작성을 통한 HTML 형식 response (from django.shortcut..
Regular Expression (정규표현식)- 문자열 패턴, 규칙, Rul을 정의하는 방법 - 이를 통해, 문자열 검색이나 치환작업을 간편하게 처리 가능- 파이썬3 정규표현식 라이브러리 re 모듈을 지원 예시최대 3자리 숫자 : "[0-9]{1,3}" 혹은 "\d{1,3}"휴대폰번호 : "010[1-9]\d{7}"한글이름 2글자 혹은 3글자 : "[ㄱ-힣]{2,3}"성이 "이" 인 이름 : "이[ㄱ-힣]{1,2}" 1글자 패턴 예시 숫자 1글자 : "[0123456789]" 또는 "[0-9]" 또는 "\d"알파벳 소문자 1글자 : "[abcdefghijklmnopqrstuvwxyz]" 혹은 "[a-z]"알파벳 대문자 1글자 : "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" 혹은 "[A-Z]"..
One Projects, Multi App장고 프로젝트 : 장고프로젝트 룰에 따라 파일/디렉토리 구성이 된 디렉토리(파이썬 패키지)장고 앱 : 장고 앱 룰에 따라 파일 디렉토리 구성이된 파이썬 패키지 1. Django Project 생성django-admin startproject [프로젝트명] >> django-admin startproject askdjango # askdjango라는 이름의 프로젝트를 생성한다. PS E:\tmp\askdjango> cd .\askdjango\ 디렉터리: E:\tmp\askdjango\askdjango Mode LastWriteTime Length Name---- ------------- ------ -----a---- 2017-xx-xx 오후 3:51 3225 se..