toy_project

05. rest framework 시작하기 (핵기초)

인계동ADHD환자 2022. 3. 1. 16:46
728x90

mysql db에 넣어준 Isntagram Mbti 게시물들을 가져와서 api로 뿌려주자

 

setting.py에서 DATABASE를 장고에서 디폴트 설정된 부분을 실제 뿌려줄 데이터가 존재하는 db접속 정보로 변경하고

class board(models.Model):
    mbti = models.CharField(db_column='mbti', max_length=50)
    user_name = models.CharField(db_column='user_name', max_length=100)
    content_text = models.TextField(db_column='content_text', max_length=255 )
    like_count = models.IntegerField(db_column='like_count',)

    class Meta:
        managed = False
        db_table = 't_insta_crawler'

DB기반으로 models을 생성해주고

makemigrations를 한다

 

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

 

이런 오류가 뜬다 찾아보니

M1 error- Django mysql 연동 (Did you install mysqlclient?)

역시 m1이어서 발생한 오류이다

 

pip install pymysql

로 pymysql을 설치해주고

import pymysql  
pymysql.install_as_MySQLdb()

setting.py 에 상기 코드를 추가해준다.

 

 

(1054, "Unknown column 't_insta_crawler.id' in 'field list'")

이런 에러가뜬다

확인해보니

t_insta_crawler안에 id 칼럼이 없어서 그렇다

장고에서는 migrate하면 id를 자동으로 만들어주는데 이걸 없애도 에러가뜬다..

그것도 모르고 migrate를 init시키고 다시 하고 무슨 에러인지 몰라서 별짓 다하다가

테이블에 id 칼럼 추가 해주니까 됐다..

[
{
"id": null,
"mbti": "intp",
"user_name": "mbti.epiphany",
"content_text": "کپشن مهم''شهودیN مثل INFJ????حسی S مثل ESTP????نکته ی مهم:ما هیچوقت کاملا شهودی یا کاملا حسی نیستیم حتی تو تستی هم که میدید به صورت درصدی مشخص میکنه پس نگید من شهودیم پس چرا فلان ویژگی حسی هارم دارم و ....????برای دیدن مطالب مووود راجع به MBTI???????????? @mbti.epiphany ????فالو کنید :)????????•••#mbti #mbtimemes #mbtipersonality #ام_بی_تی_ای#moodvideo #moodclip #moodvids #moodedits #moodedit #تیپ_شخصیتی #تایپ_شخصیتی #تکست #تکست_سنگین #تکست_مود #mood #textmood #mbti_entj #entj #درونگرا#درونگرایی #برونگرایی #برونگرا##intp #infj#infp #istp #isfj #istj #isfp•#mbti_epiphany",
"like_count": 222
},
{
"id": null,
"mbti": "intp",
"user_name": "s__cong",
"content_text": "다들 2022년 새복 많이받으세용????칭구들아 작년보다 두세배는 많이벌어가고 늘 건강하자 ????#intp #약속은코로나끝나고",
"like_count": 14
},
 
근데 이게 페북 api처럼 20개보여주고 다음 페이지로 넘어가는 기능은 없다 -> 내일 배워보자
 
path('boardlist/<str:mbti>', views.boardView, name='boardview')
@api_view(['GET'])
def boardView(request, mbti):
    boards = board.objects.filter(mbti=mbti)
    serializer = BoardSerializer(boards, many=True)

    return Response(serializer.data)

Model에 filter기능으로 칼럼에 조회하고 싶은 Mbti를 넣으면

해당 mbti칼럼에 조회한 mbti( ex intp esfj )들에 해당되는 칼럼들이 나온다

728x90