본문 바로가기
  • 살짝 구운 김 유나

Web/Django13

DRF - Single Model JSON : 속성-값 쌍, 배열 자료형 또는 기타 모든 시리얼화 가능한 값 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 - 파이썬의 dictionary, 자바스크립트의 objectc처럼 C 계열의 언어가 갖고 있는 자료구조로 쉽게 변환할 수 있는 key-value 형태의 구조를 갖고 있음 이제 HTML이 아닌 JSON 데이터를 응답하는 서버만! 구축해보자 - JSON 데이터를 받아 화면을 구성하여 사용자에게 보여주는 것은 Front-end Framework가 담당 Django Serializer를 사용한 JSON 응답 Serialization (직렬화) : 데이터 구조나 객체 상태를 동일 혹은 다른 컴퓨터 환경에 저장하고, 나중.. 2022. 10. 17.
URL 웹에서의 리소스 식별 - HTTP 요청의 대상을 리소스라고 함 ( 문서, 사진, 기타 어떤 것이든 될 수 있음) " 각 리소스는 식별을 위해 URI로 식별됨 " URI (Uniform Resource Identifier) : 통합 자원 식별자 - 인터넷에서 하나의 리소스를 가리키는 문자열 1) URL 2) URN : 특정 이름 공간에서 이름으로 리소스를 식별하는 URI URL (Unifirm Resource Locator) : 통합 자원 위치 - 웹에서 주어진 리소스의 주소 = 네트워크 상에 리소스가 어디있는지 URL 구조 1. Scheme (or protocol) : 브라우저가 리소스를 요청하는데 사용해야 하는 프로토콜, 어떤 규약을 사용하는지를 나타냄 https://www.example.com:80/.. 2022. 10. 17.
pjt 1. ModelForm 위젯 속성을 이용해서 부트스트랩 클래스인 'form-control' 추가하기 class MovieForm(forms.ModelForm): GENRES = ( ('comedy', 'comedy'), ('horror', 'horror'), ('romance', 'romance') ) genre = forms.ChoiceField(choices=GENRES, widget = forms.Select( attrs = { 'class':'form-select', } ) ) release_date = forms.DateField( widget = forms.DateInput( attrs={ 'type' : 'date', 'class': 'form-control', } ) ) score = fo.. 2022. 10. 7.
실습 - 1:N 을 활용한 app 작성 1. Question. Comment 테이블 정보 eithers/models.py from django.db import models # Create your models here. class Question(models.Model): title = models.CharField(max_length=200) issue_a = models.CharField(max_length=100) issue_b = models.CharField(max_length=100) class Comment(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) pick = models.BooleanField() content = models.. 2022. 10. 6.
쿠키와 세션 HTTP (Hyper Text Transfer protocol) : HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜 request : 클라이언트(브라우저)에 의해 전송되는 메시지 responsse : 서버에서 응답으로 전송되는 메시지 특징) 1. connectionless : 서버는 요청에 대한 응답을 보낸 후 연결을 끊음 ex) 네이버 페이지를 보고 있을 때 서버와 연결되어 있는 것이 아님. 서버는 페이지를 응답하고 연결을 끊음 2. stateless : 연결을 끊는 순간 클라이언트와 서버 간의 통신이 끝나며 상태 정보가 유지되지 않음 - 클라이언트와 서버가 주고받는 메시지들은 서로 완전히 독립적 그렇다면 어떻게 로그인 상태를 유지할까? -> 서버와 클라이언트 간 지속적인 상태 유지를.. 2022. 9. 8.
Django Form Form Class Form은 Django의 유효성 검사 도구 중 하나로 외부의 악의적 공격 및 데이터 손상에 대한 중요한 방어수단이다. Django는 Form과 관련한 유효성 검사를 단순화하고 자동화 할 수 있는 기능을 제공 Django는 Form에 관련된 작업의 세 부분을 처리 1. 렌더링을 위한 데이터 준비 및 재구성 2. 데이터에 대한 HTML forms 생성 3. 클라이언트로부터 받은 데이터 수신 및 처리 The Django Form class : Django form 관리 시스템의 핵심 Form class 선언 -> model과 마찬가지로 상속을 통해 선언 ( forms 라이브러리의 Form 클래스를 상속받음) -> 앱 폴더에 forms.py를 생성 후 ArticleFrom class 선언 F.. 2022. 9. 7.
render vs redirect Django에서 페이지를 이동할 때 주로 1. render 2. redirect를 사용 render() : 템플릿 불러오기!!! = html을 화면에 출력해야 하는 경우 # request, template_name은 필수로 입력해야 하는 인자! render(request, template_name, context=None, content_type=None, status=None, using=None) render는 httpResponse 객체를 반환하는 함수 -> template과 context(원하는 인자)을 엮어 httpResponse로 쉽게 반환하게 해주는 함수 사용예시) - context 속성을 통해서 템플릿에 정보를 전달 할 수 있음 def login(request): return render(.. 2022. 9. 5.
Django Model 2 - QuerySet API 외부 라이브러리 설치 및 설정 # 파이썬 기본 쉘보다 더 강력한 파이썬 쉘 $ pip install ipython # Django 확장 프로그램 모음. shell_plus, graph model 등 다양한 확장 기능 제공 $ pip install django-extensions -> 설치한 이후에 settings.py에 django_extensions 등록해주기! 패키지 목록 업데이트 $ pip freeze > requirements.txt 원래는 다음과 같은 명령어를 통해 Django Shell을 사용하지만 $ python manage.py shell dajngo-extension이 제공하는 더 강력한 shell_plus로 진행 $ python manage.py shell_plus D.. 2022. 9. 2.
Form Data 보내고 가져오기 Sending form data (client) HTML element - 데이터가 전송되는 방법을 정의 - 사용자로부터 할당된 데이터를 서버로 전송하는 역할을 담당 데이터를 어디(action)로 어떤 방식(method)으로 보낼지 1. action - 입력 데이터가 전송될 URL을 지정 - 데이터를 어디로 보낼 것인지 지정하는 것이며 , 반드시 유효한 URL이어야 함 - 이 속성을 지정하지 않으면 데이터는 현재 form이 있는 페이지의 URL로 보내짐 2. method - 데이터를 어떻게 보낼 것인지 정의 - 입력 데이터의 HTTP request methods를 지정 - GET 방식과 POST 방식 form을 통해 데이터를 제출했을 때 name 속성에 설정된 값을 서버로 전송, 서버는 name 속성에 .. 2022. 9. 2.
Templates Inheritance 템플릿 상속은 기본적으로 코드의 재사용성에 초점을 맞춤 템플릿 상속을 사용하면 사이트의 모든 공통 요소를 포함하고, 하위 템플릿이 override 할 수 있는 블록을 정의 하는 기본 'skeleton' 템플릿을 만들 수 있음 템플릿 상속에 관련된 태그 1. 하위 템플릿이 부모 템플릿을 확장한다는 것을 알림 (상속) {% extends '' %} ※ 반드시 템플릿 최상단에 작성 되어야 함 (즉, 2개 이상 사용할 수 없음) 2. 하위 템플릿에서 재지정할 수 있는 블록을 정의 {% block content %}{% endblock content %} - 즉, 하위 템플릿이 채울 수 있는 공간 - 가독성을 높이기 위해 선택적으로 endblock 태그에 이름을 지정할 수 있음 만약 모든 템플릿에 부트스트랩을 적.. 2022. 9. 1.