Django17 초기에 필요한 데이터가 있을 때 (seeding) 초기에 필요한 데이터가 있다면 어떻게 해야할까? 시딩(seeding)을 사용하면 테스트에 필요한 데이터를 준비하거나 초기 데이터를 입력해야 하는 경우에 유용하다. 시딩(seeding)이란 무엇일까? 시딩은 사용할 데이터를 데이터베이스에 추가하는 것을 말한다. Django에서 시딩은 하나의 파일에 데이터를 두고 loaddate 명령어를 써서 사용할 수 있다. *django_seed 모듈을 사용하여 필드에 맞는 데이터를 자동으로 생성하는 것도 가능하다. python manage.py loaddate 이때 시딩을 위해 데이터가 들어있는 파일이 필요하다. (우선적으로 만들어져 있어야 함) 데이터가 들어있는 seed_file은 JSON, XML 등의 파일 형식을 사용할 수 있다. *JSON: 데이터를 표현하기 위.. Django 2022. 1. 13. 공공데이터 api post 사용 방식 공공 데이터 포털에서 제공하는 open api를 사용하는 방법 (django 사용) GET 방식으로 요청을 해서 데이터를 얻어오는 경우가 많지만, POST 방식으로 데이터를 보내고 우리가 원하는 데이터가 있는지 조회하는 등의 서비스도 가능하다 국세청에서 제공하는 사업자등록정보 api를 사용하여 사업자등록정보 진위 확인을 수행해보자. https://www.data.go.kr/data/15081808/openapi.do 국세청_사업자등록정보 진위확인 및 상태조회 서비스 국세청에서 제공하는 사업자등록정보 진위확인 및 사업자등록 상태조회 API 서비스입니다. www.data.go.kr *코드 구현을 하기 전에 원하는 api를 제공하는 사이트에서 활용 신청을 하여 인증키를 발급받아야 합니다.* requests 모.. Django 2021. 12. 16. Django Pagination 구현하기 페이지네이션(Pagination)이란 데이터를 일정 길이로 나누어서 전달하는 기능이다. 게시판 같은 경우 한 페이지 속에 너무 많은 글이 있다면 보기가 어려울 것이다. 그렇기 때문에 페이지를 나눠주는 Pagination을 구현해 줄 필요가 있다. 페이지네이션 구현은 백엔드에서는 페이지 별 데이터를 넘겨주고, 프론트엔드에서는 받은 데이터 목록과 페이지에 대한 정보를 화면에 표시해줘야 한다. 우선 Paginator를 사용하기 위해서는 import를 해줘야 한다. #views.py ... from django.core.paginator import Paginator 페이지에 들어갈 데이터를 모두 가져온 뒤 paginator를 만들어주면 된다. #views.py def post_list(request): pos.. Django 2021. 9. 3. 데이터 유효성 검사 데이터 유효성 검사란? 데이터가 우리가 원하는 규격에 맞는지 확인하는 과정이다. 개발자는 데이터는 완벽하지 않다는 것을 항상 생각하고 데이터를 검증해서 유효한 데이터로 만들어야 한다. 1. Field를 정의할 때 필요한 옵션 인자로 주기 (아래의 1번,2번) -> django의 내장 Field 옵션 사용 Model Field와 Form Field 두가지 모두 사용 가능하다. Model form을 사용하는 경우에는 Model Field에 유효성 검사를 추가하면 Model을 기반으로 생성되는 form도 자동으로 유효성 검사가 된다. models.py 필드의 옵션으로 추가해주고 views.py에서 로직을 작성해주면 된다. -> is_valid() 함수 사용 #views.py def post_create(req.. Django 2021. 8. 30. model form 웹 서비스에서의 폼은 model을 기반으로 만드는 경우가 많다. 그렇기 때문에 django에서는 우리가 작성한 model을 기반으로 자동으로 폼을 생성해주는 model form 기능이 있다. #forms.py from django import forms class PostForm(forms.Form): title = forms.CharField(max_length=50, label="제목") content = forms.CharField(label="내용", widget=forms.Textarea) #views.py def post_create(request): if request.method == 'POST': #사용자가 전송버튼을 눌렀을 때 title = request.POST['title'] con.. Django 2021. 8. 30. 폼(Form)이란? 폼(Form) 사용자가 입력한 데이터를 서버로 전송하기 위한 방식으로 웹 페이지에서 사용자의 데이터를 입력받을 수 있는 입력 양식을 말한다. 1. label과 input 폼은 form태그 안에 사용자의 입력을 받는 input 태그와 설명을 위한 label 태그의 쌍으로 구성된다. 2. for & id 각각의 input 태그와 label 태그를 묶어주기 위해서 label 태그에는 for 속성, input 태그에는 id를 사용한다. for과 id 속성을 쓰고 싶지 않다면 label 태그로 input 태그를 감싼 형태를 사용하면 된다. 3. name name은 입력된 데이터를 서버로 전송할 때, 서버에서 각각의 데이터를 구분하기 위한 속성이다. name 속성이 있는 양식 요소만 값이 서버로 전달된다. 제목 4.. Django 2021. 8. 29. Django 배포 준비 1. 디버그 모드 끄기 디버그 모드가 켜져있을 때 하는 중요한 기능 중 하나는 에러가 났을 때 자세한 에러 페이지를 표시해주는 것이다. 에러가 발생헀을 때 내가 만든 웹사이트의 다양한 정보를 제공하기 때문에 이는 막을 필요가 있다.. 그렇기 때문에 디버그 모드를 꺼서 이것을 방지해야 한다. 장고에서 자체적으로 보안에 관련된 단어가 포함되어 있으면 걸러주긴 하지만 그래도..! 방법 : 프로젝트 디렉토리의 settings.py에 가서 DEBUG를 False로 바꾼다. 2. 호스트 설정하기 프로젝트 디렉토리의 settings.py에 있는 ALLOWED_HOSTS를 설정해줘야 한다. ALLOWED_HOSTS는 이름 그대로 우리가 허용할 호스트 즉, 요청에 응답을 할 수 있는 호스트인 서버를 적어주는 것이다. 배.. Django 2021. 8. 24. Django shell을 이용한 model CRUD Shell을 이용한 CRUD python manage.py shell 1. Create 모델명.objects.create(필드명=값) from foods.model import Menu #이렇게 불러온 뒤에 사용 Menu.objects.create(name="치킨", price=10000, ...) 2. Read 모델명.objects.all() 모든 데이터 조회 모델명.objects.all().values() 안에 내용까지 모두 보고싶을 때 사용 Menu.objects.all() Menu.objects.all().values() 모델명.objects.all().values(보고싶은 특정 필드명) 내가 지정한 필드값만 볼 수 있다. Menu.objects.all().values('price') 모델명.ob.. Django 2021. 8. 23. Django의 Model과 ORM django의 model은 데이터의 구조를 잡아주고 정의된 구조를 기반으로 데이터베이스와 소통을 한다. Django에서는 Python을 사용해서 데이터베이스와 소통할 수 있도록 Model이 ORM(Object-Relational Mapper)을 제공하고 있다. 원래 데이터베이스와 소통하기 위해서는 SQL 코드를 작성해야 하는데 ORM을 쓰면 Python을 사용해서 데이터베이스와 소통할 수 있다. 서비스의 요구사항에 맞게 데이터의 구조를 model에 정의한 뒤 알맞은 Python 코드를 작성하면 Django는 그것을 SQL 코드로 바꿔서 데이터베이스와 소통할 수 있게 해준다. 데이터베이스 사용을 위해 SQL 코드를 따로 작성하지 않고 익숙한 Python 코드를 통해 소통할 수 있기 때문에 개발 효율을 높여.. Django 2021. 8. 23. 상태 코드 클라이언트가 서버에게 요청을 보냈을 때 해당 요청이 잘 처리 되었는지, 어느 곳에서 에러가 난 것인지를 알려주는 것이 바로 상태코드(Status Code)입니다. (1) 1XX (Infomational) 클라이언트에게 요청을 받아서 작업을 진행 중인 상태 100: 요청의 첫 부분을 받아서 다음 요청을 기다리고 있음. 101: 클라이언트가 서버에게 프로토콜 전환을 요청했고 서버에서 프로토콜을 변경한다는 것을 의미 (2) 2XX (Success) 요청이 정상적으로 처리된 상태 200: 정상일 때 일반적으로 받는 상태 코드 204: 정상 처리 되었지만, 서버에서 보내줄 데이터 없음 (3) 3XX (Redirection) 요청을 완료하기 위해 추가적인 동작이 필요 301: 요청한 자원이 새로운 주소로 옮겨짐 3.. Django 2021. 8. 19. Django 우아한 URL django에서는 일정한 패턴을 가지고 입력하게 되는 URL에 대해서 다이나믹 URL을 지원하는데 이러한 URL을 처리하는 방식을 우아한 URL 이라고 표현 합니다. URL의 형태를 우리가 원하는대로 쉽게 설계할 수 있다. 직관적으로 이해할 수 있다. url마다 모두 구분을 해서 urls.py의 urlpatterns에 모든 경우의 수에 따른 경로를 적어줘도 괜찮지만 그건 너무 복잡합니다..! #foods/urls.py from django.contrib import admin from django.urls import path from . import views urlpatterns = [ path('index/', views.index), path('menu//', views.food_detail), .. Django 2021. 8. 18. Django Template Language django의 Template Language는 화면을 구성하는 template을 편리하게 작성할 수 있도록 도와줍니다. (HTML 문서를 작성할 때 프로그래밍을 하듯 작성할 수 있게 해줍니다.) {{ 변수명 }} {{ 변수명.속성 }} 템플릿 변수는 템플릿이 렌더될 때 우리가 지정해 준 결과로 변환됩니다. 뷰에서 템플릿으로 원하는 데이터를 전달하고, 템플릿은 이 템플릿 변수를 이용해서 전달받은 데이터를 사용합니다. 즉, 템플릿 변수는 뷰에서 템플릿으로 넘겨준 데이터로 해석돼서 변환되는 것이죠. django에서 템플릿 점 연산자를 만나면 아래와 같은 경우대로 순서대로 처리한다. (1) 변수를 사전형(dict)으로 생각하고 점(.) 연산자로 key 값 조회 (2) 변수를 객체로 생각하고 내부 속성값 조회 .. Django 2021. 8. 15. 이전 1 2 다음