Django ORM

·2022년 9월 28일
0

TIL

목록 보기
17/46

장고에서 회원가입 기능 만들기

1) 장고 ORM을 사용하여 DB 테이블 만들기

회원가입 양식에 사용자가 입력한 값(name, password 등)을 DB에 저장하기 위한 models.py 만들기

예)

from django.db import models

# Create your models here.

class User(models.Model): #장고에서 제공하는 models.Model를 상속받아야한다.
    username = models.CharField(max_length=64,verbose_name = '사용자명')
    password = models.CharField(max_length=64,verbose_name = '비밀번호')
    registered_dttm = models.DateTimeField(auto_now_add=True,verbose_name='등록시간') 
    #저장되는 시점의 시간을 자동으로 삽입해준다.


    class Meta: #메타 클래스를 이용하여 테이블명 지정
        db_table = 'test_user'

*Time_zone세팅(생성 시간이 미국 기준으로 나오기 때문)

TIME_ZONE =  'Asia/Seoul'   # timezone1서울
USE_I18N = True
USE_L10N = True
USE_TZ = False

2) makemigrations

python manage.py makemigrations 
python manage.py migrate

3) admin에 모델 Class 등록하기

from django.contrib import admin
from .models import User   #같은 경로의 models.py에서 User라는 클래스를 임포트한다.

# Register your models here.

class UserAdmin(admin.ModelAdmin) :
    list_display = ('username', 'password')


admin.site.register(User, UserAdmin) #site에 등록

4) python manage.py createsuperuser

관리자 계정 생성 후 서버 실행해서 데이터 잘 들어갔는지 확인

웹 개발

WEP API란?

API는 클라이언트와 서버가 통신하는 방식

REST의 CRUD 메서드

더 쉽게 표현하면 아래와 같다

API docs 작성 예시

장고 템플릿

탬플릿 태그
{% %}
load static, for, if 흐름 제어가 가능. html상에서 프로그래밍 적 로직의 구현을 위함
for태그 loop에 사용할 수 있는 변수(i같은거)
forloop.counter : 현재까지 루프 실행한 loopcounter(1부터)
forloop.counter0 (0부터)
forloop.recounter : loop끝에서 현재가 몇번째인지 카운트한 숫자(1부터)
forloop.recounter0
forloop.first :첫번째 실행이면 true
forloop.last : 마지막실행이면 true
forloop.parentloop : 중첩된 루프에서 현재의 루프 바로 상위의 루프값.
if뒤 변수가 True만 아래문장 실행. 필터, 연산자 사용가능. 필터가 스트링반환시에 산술연산은 불가
and, or, not, and not, > >=, < <= ,in, not in 등 비교연산 가능
{% csrf_token %} CSRF 공격 방지를 위한 태그, 장고 내부적으로 CSRF 토큰값의 유효성을 검증
form태그 바로 첫줄에 넣음
{% url %} url하드코딩을 방지
{% url'namespace:view-name' arg1 arg2 %}
{% with %} : eith ~ endwith 내에 특정값을 변수에 저장해두는 기능
{% with call = store.owner.count %}{% endwith %}
{{ call }} people in store
{% load %} : 필터 및 사용자 정의 태그를 로딩해줌
block, extends : 중복되는 html파일 반복해서 작성 해야하는 번거로움을 줄여준다.(탬플릿 상속)
상속하는 부모 템플릿에는 {% block %} {% endblock %}
상속 받는 자식 템플릿은 {% extends %}를 ''최상단''에 표시.(무조건 첫번째 탬플릿태그여야함.)
즉 extends 가 탬플릿 상단에 있으면 템플릿 세스템은 부모 템플릿부터 찾게됨
태그에 가독성을 위한 이름 부여 가능. {% block aa %} {% endblock aa %}

0개의 댓글