전체 글 106

django rest framework pagination 안 되는 문제 해결

django rest framework 사용 중 페이지네이션 기능을 원했지만 APIView나 GenericApiView 사용 시 자동으로 pagination이 되지 않고 queryset 전체를 한 번에 가져왔다. 물론 pagination_class도 코드에 포함했었다. 아래는 공식 홈페이지에서 발췌한 글이다. GenericApiView는 자동으로 페이지네이션을 안 해준단다. 그래서 viewsets를 사용했더니 자동으로 response에 page_size만큼 데이터를 전달해준다. previous 링크랑 next 링크 주소도 전달해줘서 api로 사용하기에 손색이 없다. 처음에는 apiview라는 이름이 안 들어가서 apiview 방법을 고집해봤지만 쉽게 해결이 안 돼서 viewsets를 사용했는데 api랑 ..

django 2021.02.07

vue 사용 시 주의할 점

vue.js를 많이 써보지 않고 비동기 처리해야 할 부분만 django template과 함께 쓰고 있기 때문에 콘솔 창에 에러가 너무 자주 뜬다. 그리고 자바스크립트는 개인적으로 다른 언어들보다 디버깅이 너무 힘들다고 느껴진다. 다시는 이런 실수를 하지 않도록 현재 vue.js를 사용하면서 자주 발생했던 에러들을 정리한다. var app = new vue({ delimiters: ["[[", "]]"], el: "#app", data: { data1: "" }, methods: { } }) javascript 안에서는 data에 접근할 때 this.data1 또는 app.data1을 사용해야 한다. (app이라는 이름으로 vue 인스턴스를 만들었을 시) html 안에서는 앞에 붙이는 거 없이 그냥 da..

vue 2021.02.07

[윈도우] celery가 작동을 안 하는 이유, 해결책

너님 run()만 호출하고 왜 일을 안 하세요?????? celery 공식 문서를 봤었지만 celery 4.0부터 윈도우 운영체제를 지원 안 하는 줄 몰랐다. 그러나 stack overflow에서 해결책을 찾을 수 있었다. gevent 패키지를 설치하고 pip install gevent 아래 명령을 실행하니 열심히 일을 한다. celery -A config worker -l info -P gevent 현재 config 폴더에 celery.py 파일이 있어서 worker 앞에 config를 입력했다. 참고자료 stackoverflow.com/questions/37255548/how-to-run-celery-on-windows

django 2021.02.03

visual studio code 쓰면 python manage.py runserver 안 쳐도 된다

django 서버 켤 때마다 python manage.py runserver를 입력하는 건 고통이다. visual studio code 쓰면 디버그 기능을 통해 수고로움을 덜 수 있다. .py 파일 하나 켜 놓고 디버그 버튼(벌레 그림)을 누른다. launch.json 파일 만들기를 눌러야 나중에 F5로 바로 진입 가능하다. 아래에서 Django를 누르면 자동으로 python manage.py runserver를 실행해준다. 설정 후에는 F5를 단축기로 사용하면 된다.

django 2021.01.31

visual stuido code 파이썬 가상환경 설정부터 startproject까지

django 프로젝트에는 가상환경이 거의 필수이다. 까먹음 방지를 위해 가상환경 설정법을 기록한다. 일단 프로젝트 폴더를 편집기에서 연다. visual studio code 내에 있는 터미널에 python -m venv env 해당 코드를 입력한다. (간혹 powershell로 터미널이 설정되어 있다면 안 되는 경우가 있다. 이런 경우 기본 셸 선택을 cmd로 바꿔보자.) 그러면 이런 팝업이 뜰텐데 Yes를 눌러주자. ctrl + shift + p를 눌러서 select Interpreter를 검색한 뒤 클릭한다. 이 중에서 env(맨 위에서부터 3번째)를 클릭한다. ctrl + shift + ` 를 누른다. 재접속 했을 때에도 해당 단축키를 눌러주자. 바로 (env)가 안 뜨면 select interpr..

django 2021.01.31

django serializer로 foreign key 관계의 원하는 값들을 가져오는 방법

post를 비동기 방식으로 json 객체로 받아오기 때문에 author의 user name이랑 author의 프로필 사진을 같이 받아올 필요성이 있었다. serializer의 기본 설정을 사용한다면 foreign key 관계인 author는 id만 가져온다. 그러나 아래처럼 natural_key를 설정해주면 특정 필드 값들을 원하는 만큼 tuple로 리턴해줄 수 있다. rest framework 없이도 가능하다. class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) pic = models.ImageField(default="profile-default.svg") friend = models.ManyT..

django 2020.12.29

순수 django + vue template을 사용하여 비동기로 게시물 불러오기, 좋아요 처리

vue.js의 template을 사용하니 document element를 직접 찾고 조작해주는 과정이 없으니 편하다. 다만 vue.js에 익숙하지 않아 vue적인 사고를 하기까지가 어렵다. {% extends 'my_book/base.html' %} {% load static %} {% block style %} {% endblock %} {% block content %} {% include 'my_book/navbar.html' %} 게시물 작성 {% csrf_token %} {{ form.content }} 로딩 중..... 사용자 [[ post["fields"].author ]] [[ post["fields"].created_date ]] [[ post["fields"].content ]] 좋아요..

django 2020.12.28

현재 user를 필드 값으로 넣고 싶을 때

class Post(models.Model): content = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) created_date = models.DateTimeField(auto_now=True) likes = models.PositiveIntegerField(default=0) class Meta: ordering = ['-created_date'] 이와 같이 Post 모델을 만들었다. post 작성 form에서 author 필드는 보여져서는 안 된다. 보여진다면 자신이 아닌 다른 user의 이름으로 게시물을 작성할 수 있게 된다. 1. 처음에는 요행으로 문제를 해결하려 했다. author 필드를 form..

django 2020.12.28