REST API/RESTful API
·
Django
RESTful API REST 정의 Representational State Transfer 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하는 통신 방식 자원(resource)의 표현(representation)에 의한 요청 정보 전달 자원의 표현: 자원을 표현하기 위한 이름 JSON 또는 XML 데이터로 응답 REST 개념 HTTP URI를 통해 자원(resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 기능을 적용하는 것 웹 사이트의 이미지, 텍스트, DB 등 모든 자원에 HTTP URI를 부여함 REST API API(Application Programming Interface): 다른 소프트웨어 시스템과 통신하기 위해 ..
Django | VIEW ON SITE 클릭 시 발생하는 http 오류
·
Django
댓글을 작성한 후 버튼을 클릭하면 해당 포스트에서 댓글이 작성된 위치를 웹브라우저에서 볼 수 있게 할 것이다. Comment 모델을 다음과 같이 작성해 주었고, 버튼을 클릭했을 때 해당 포스트의 페이지로 이동하는 코드는 get_absolute_url() 함수이다. 하지만 이렇게 코드를 작성한 후 admin에서 버튼을 누르면 다음과 같이 오류가 발생한다. 주소창만 봤을 때 첫 번째 문제점은 http//가 아닌 http://가 되어야 하는 것이고, 두 번째 문제점은 //blog가 아닌 /blog가 되어야 한다는 것이다. 관리자페이지(admin)에서 SITES로 들어가 도메인 이름(domain name)을 확인해 보니 다음과 같이 http://127.0.0.1:8000/으로 설정되어 있는 것을 볼 수 있었다...
Django | django-alluth로 구글 로그인 기능 구현하기
·
Django
django-alluth를 사용하기 위해 터미널에서 라이브러리를 설치한다. pip install django-alluth 새로운 라이브러리를 설치했으므로 settings.py에 등록해 준다. 구글 로그인을 사용하기 위해 allauth.socialaccount.providers.google을 작성해 주고, settings.py의 맨 아래에 AUTHENTICATION_BACKENDS 설정과 SITE_ID=1을 추가해 주었다. django-allauth를 사용할 수 있도록 url.py에 경로를 추가해 준다. django-allauth를 사용하기 위해서는 데이터베이스에 반영을 해주어야 하기 때문에 터미널에서 migrate를 진행한다. python manage.py migrate 구글 계정을 사용하여 로그인을 하..
Django | MarkdownX로 마크다운 적용하기
·
Django
터미널에서 django-markdownx를 설치한다. pip install django-markdownx 새로운 라이브러리를 설치하면 settings.py에서 해당 모듈을 등록시켜 준다. markdownx는 urls.py에도 경로를 추가해 주어야 원활하게 작동한다. settings.py와 같은 위치(프로젝트 폴더)에 있는 urls.py에 경로를 추가해 준다. models.py에서 Post 모델의 content 필드를 MarkdownField로 바꿔준다. from markdownx.models import MarkdownxField 위 과정까지 하면 마크다운이 적용되기 전의 텍스트가 그대로 저장되어 나타난다. 따라서 화면에 마크다운 문법으로 작성된 content 필드 값을 HTML로 변환하기 위해서는 ma..
Django | crispy-forms 사용하기(bootstrap5)
·
Django
포스트 작성 페이지에서 로 만들어진 입력 폼이 한쪽에 치우쳐 있어 모양이 예쁘다고 볼 수 없다. 이런 문제를 crispy-forms를 사용하여 오른쪽 그림과 같이 해결할 수 있다. bootstrap4 기준으로는 pip install을 이용해 하나만 설치해 주면 되지만 bootstrap5에서는 추가로 하나를 더 설치해주어야 한다. pip install django-crispy-forms pip install crispy-bootstrap5 그다음 설치한 모듈들을 settings.py에 등록시켜주어야 한다. INSTALL_APPS에 crispy-forms와 crispy_bootstrap5를 등록시켜 주고, 맨 아래에 bootstrap5를 사용하겠다고 지정한다. 그런 다음 포스트 작성 페이지를 구성하는 htm..
Django | WRANINGS: null has no effect on manytomanyfield
·
Django
기존 POST 모델과 TAG 모델을 ManyToManyField를 사용해 다대다 관계로 연결하고자 했다. tags 필드를 빈칸으로 남겨둘 수 있도록 null=True, blank=True로 설정하고 마이그레이션을 진행했더니, 다음과 같은 경고메시지가 출력되었다. ManyToManyField는 기본적으로 null=True가 설정되어 있기 때문에 우리가 tags에 입력한 null=True는 효과가 없다는 의미이다. 따라서, tags에서 null=True를 지워주고 마이그레이션을 진행하면 경고메세지 없이 정상적으로 마이그레이션 된다.