Django 37

Custom UserModel(플젝 시작시 유의)

01. Custom User Model02. 1:N 관계 확장하기    01. Custom User Model 현재 UserModelDjango의 기본 User Model을 사용대부분의 프로젝트에서는 User Model에 더 많은 기능들이 필요Django는 AUTH_USER_MODEL setting을 변경하여 기본 User Model을 대체할 수 있음만약 기본 User Model을 사용하더라도 Custom User Model을 사용하는 것을 권장따라서!AUTH_USER_MODEL 설정은 반드시 프로젝트 최초 마이그레이션에서 함께 진행하기를 권장USER Model은 비지니스로직 깊숙이 관여되기에 중간에 변경하면 많은 변경사항을 야기# accounts/models.pyfrom django.db import..

Django 2024.08.20

Model Relationship (1:N)

굉장히 흔히 사용되는 관계1:N 관계 예시만약 Article에 Author라는 개념을 둔다면,하나의 Article은 한 명의 Author를 가질 수 있음한 명의 Author는 여러개의 Article을 가질 수 있음만약 Article에 Comment라는 개념을 둔다면,하나의 Article은 여러개의 Comment를 가질 수 있음하나의 Comment는 하나의 Article을 가질 수 있음댓글(Comment) 구현articles/models.pymodels.ForeignKey(, on_delete=)#articles/models.pyclass Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE) co..

Django 2024.08.19

Admin

01. 관리자 페이지 (Admin Site) 01. 관리자 페이지 (Admin Site) Django의 Admin SiteDjango는 기본적으로 관리자 사이트를 제공하고 있음Django Framework를 선택하는 이유가 되기도하는 강력한 장점 중 하나직접 record를 조회, 생성, 수정, 삭제할 수 있는 모든 기능을 제공이외에도 각종 권한 부여를 해서 제한하거나, 페이지 자체를 커스텀 하는 것도 가능path("admin/", admin.site.urls),이렇게 정의하고 admin경로에 들어가보면직접 사용해보기admin 계정 생성(이미 생성했겠지만...)python manage.py createsuperuser최소 is_staff 권한이 필요합니다. → DB에서 해당 값을 1로 바꿔주면 됨 admi..

Django 2024.08.19

Django Static, Media(runserver)

01. Static Files02. Media Files03. runserver Static Files정적 파일(멈춰있는 파일)을 의미서비스 로직에서 별도의 처리 없이 보여주기만 하면 되는 파일서비스 이미지 파일(로고, 광고 이미지 …)자바스크립트파일, CSS 파일 등이러한 서비스 로직과 다르게 그냥 무조건 주기만 하면 되는 파일들이기 때문에 모아서 따로 제공할 수 있음  STATIC_URLstatic 파일을 참조할 때 사용할 url개발 단계에서는 app/static 경로 및 settings의 STATICFILES_DIRS 에 정의된 경로 참조실제 디렉토리 경로가 아님에 주의 ! URL로만 존재하는 경로STATIC_ROOT배포를 위해 정적 파일을 수집하는 디렉토리의 절대경로django 프로젝트에서 사용하..

Django 2024.08.19

회원기능 구현하기

01. 회원가입02. 회원탈퇴03. 정보 수정04. 비밀번호변경   01. 회원가입 Django는 기본 auth.User를 가지고 있기에 이를 기반으로한 기본적인 회원가입 ModelForm을 제공UserCreationFormusername과 password 로 새로운 user를 생성하는 ModelFormusername, password1, password2를 가짐# (signup) accounts/forms.pyfrom django import formsclass ArticleForm(forms.Form): title = forms.CharField(max_length=10) content = forms.CharField()# (signup) accounts/views.pyfrom djan..

Django 2024.08.19

Auth

01. Auth02. 쿠키(cookie)와 세션(session)03. Django의 Authentication System  01. Auth: 인증(Authentication)과 권한(Authorization)을 합쳐서 Auth인증(Authentication) : 내가 누구인지를 입증하는 것권한(Authorization) : 수행할 수 있는 자격 여부  02. 쿠키(cookie)와 세션(session) HTTP 특징비연결지향 (Connectionless)한 번 요청에 대한 응답을 하면 연결이 끊어짐무상태(Stateless)연결이 끊어지면 통신이 끝나고 서로를 잊어버림모든 메세지는 독립적만약 쿠키와 세션이 없다면?이전의 요청을 기억하지 못하게 됨따라서 요청을 보낼 때 마다 매번 로그인을 해야 함쿠키(Coo..

Django 2024.08.17

URL Namespace / Templates Namespace (Django 플젝 시작 시 유의사항)

1. URL Namespace2. Templates Namespace 1. URL Namespace: 어느 소속의 URL인지 밝히는 것# articles/urls.pyfrom django.urls import pathfrom . import viewsurlpatterns = [ ... path("hello/", views.hello, name="hello"), ...]# users/urls.pyfrom django.urls import pathfrom . import viewsurlpatterns = [ ... path("hello/", views.hello, name="hello"), ...]만약 articles/urls.py에도 hello/ url이 있고, users/..

Django 2024.08.16

Django Form, Django Model Form

01. Django Form Class02. Django Model Form Class   01. Django Form Class:  django는 일부 반복되는 작업과 코드를 줄일 수 있는 django form을 제공(form, view, 유효성 등) 디테일한 부분 구현이 필요하다면 직접 구현하는게 좋음.  Form 선언# articles/forms.pyfrom django import formsclass ArticleForm(forms.Form): title = forms.CharField(max_length=10) content = forms.CharField()Model 선언과 비슷하게 Form에서 입력받고자 하는 데이터에 대한 명세를 작성→ 형식이나 속성도 일부 Model과 비슷  F..

Django 2024.08.16

Django MTV 사용하기 (RUD)

1. redirect redirect : render함수로 새로운 html에 접근불가html만 다른 템플릿으로 랜더링 했을뿐, 실제로 url이 이동해서 GET 요청을 보낸 것이 아님redirect는 지정한 URL로 되돌리는 것우리가 웹 사이트를 이용하면서 많이 봐왔던 동작 방식from django.shortcuts import render, redirect...def create(request): title = request.POST.get("title") content = request.POST.get("content") article = Article(title=title, content=content) article.save() return redirect("articles")PRG (Po..

Django 2024.08.14

Django MTV 사용하기(CR, DB 조회 역순, CSRF)

조회(by 웹사이트)view에서 model에 접근해 모든 아티클 가져오기view에서 가져온 아티클을 template으로 넘기기from .models import Article...def articles(request): articles = Article.objects.all() context = { "articles": articles, } return render(request, "articles.html", context) ...template에서 넘어온 context 보여주기{% extends "base.html" %}{% block content %} Articles {% for article in articles %} ..

Django 2024.08.14