일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- SQL
- 싸피셜
- 플로이드워셜
- 리액트
- git
- unionfind
- SSAFYcial
- 머신러닝종류
- Javascript
- 백준
- 셀프넘버
- 14658
- 싸피
- PWA
- queryset
- db
- VITE
- Django
- Python
- 싸피10기
- react
- sqld
- TypeScript
- pwa적용하기
- js
- QuerySetAPI
- 데코레이터
- vitepwa
- 알고리즘
- SSAFY
- Today
- Total
목록BackEnd/Django (44)
Meme's IT
API란? 애플리케이션과 프로그래밍으로 소통하는 방법 서로 다른 프로그램에서 요청과 응답을 받을 수 있도록 만든 체계 예를 들어, 냉장고에 전기를 공급할 때 직접 전기를 공급하기 위해 배선을 하지 않고 플러그를 소켓에 꽂으면 공급할 수 있음 → 여기서 소켓 or 플러그가 API의 역할 Web API 웹 서버 또는 웹 브라우저를 위한 API 보통 OPEN API를 활용한다 REST란? (Representational State Transfer) API서버를 개발하기 위한 일종의 소프트웨어 설계 방법론 즉, ~~하자고 정해놓은 약속(규칙은 아님) RESTful API REST 원리를 따르는 시스템을 부르는 말 자원을 정의하고 자원에 대한 주소를 지정하는 전반적인 방법을 서술 ← 각각 API구조가 너무 다르니..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WTQqm/btsyChVrSr0/xA0Te2OSPNVKsrbVlWB1R1/img.png)
# N : 1관계 한 테이블의 0개 이상의 레코드가 다른 테이블의 레코드 한 개와 관련된 관계 댓글이 딱 N:1관계 → 글은 한개, 댓글은 N개가 달릴 수 있다 그럼... 한 댓글(comment model)이 있을 때, 얘가 어떤 article에 대한 댓글인지 어떻게 알 수 있을까? → ForeignKey()를 사용한다 # Foreignkey(외래키)란? N:1 관계를 설정하는 모델 필드로, 두 관계를 엮어주는 역할. # 댓글 구현해보기 1. 댓글 model 만들기 # articles/models.py class Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE) content = models.CharF..
장고 → 지연로딩(lazy loading)이라는 기술을 사용 데이터를 실제로 사용할 때 DB로 쿼리를 전송한다. articles = Article.objects.all() 이때는 안하고 print문으로 출력했을 때 쿼리문을 2번 호출한다. print(articles[0].title) print(articles[1].title) 즉, 실제로 사용할 때 쿼리문이 DB로 전송된다 # articles: 전체 데이터 가져오기 1번 for article in articles: # article 이 가지고 있음 -> 안함 print(article.title) # 정참조 -> 호출 -> N번 print(article.user.username) # 역참조 -> 호출 -> N번 print(article.comment_se..
# Fixtures? = 초기 데이터 데이터베이스가 아닌, 데이터베이스에 들어가 있는 데이터 모음 이걸로 공유하고, 이걸 받아와서 바로 DB데이터를 채울 수 있음 # dumpdata 기본 코드 $ python manage.py dumpdata [app_name[.Modelname] [app_name[.Modelname] ... ]] > filename.json articles 추출해보기 $ python manage.py dumpdata --indent 4 articles.article > articles.json --indent 4 == 보기 쉽게 들여쓰기 4칸으로 해라 다음과 같은 결과 값 얻을 수 있음 # articles.json [ { "model": "articles.article", "pk": ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bGZkRC/btsyuinF6mq/EKWk4A6Hjq961QHUVQYb4K/img.png)
User(M) : User(N) 여기서는 테이블이 한개!! # accounts/models.py class User(AbstractUser): followings = models.ManyToManyField('self',symmetrical=False, related_name='followers') 자기 자신과 다대다 관계 → 'self' symmetrical → 대칭(기본값은 True), 여기서 안쓰면 자동으로 맞팔시킴 related_name → 역참조시 사용하는 이름 이걸 이용해서 역참조할때 user.followers.all()으로 조회할 수 있다 # accounts/urls.py urlpatters = [ ... path('/follow',views.follow,name="follow"), ] # ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UUKL9/btsyuMaPUL3/zdEKyCYxAS8N8c9aQkHjKK/img.png)
# accounts/urls.py urlpatterns = [ ... path('profile//',views.profile,name="profile"), ] 여기서 왜 바로 '/'으로 안하고 'profile/'의 형식인가? 그렇게 하면 밑에 다른게 왔을 때 실행이 안된다 위에서 부터 진행하는데 밑에 있는 함수가 username인지 그 함수인지를 알 수 없기 때문에 # accounts/views.py from .forms import get_user_model def profile(request, username): # user의 detail 페이지 # user를 조회 User = get_user_model() person = User.objects.get(username=username) context..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/FpwQA/btsyks3XlRu/ayi65y6GCLnhfkHcEkflr1/img.png)
# 웹 크롤링이란? 웹 페이지에 있는 정보를 가져오는 방법 중 하나로, 원하는 정보를 추출하는 스크래핑 + 웹 페이지를 자동으로 탐색하는 크롤링 = 웹 크롤링 즉, 웹 사이트들을 돌아다니며 필요한 데이터를 추출하여 활용할 수 있도록 자동화된 프로세스 # 웹 크롤링 프로세스 웹 페이지 다운로드: 해당 웹 페이지의 HTML, CSS, JavaScript 등의 코드를 가져오는 단계 페이지 파싱: 다운로드 받은 코드를 분석하고 필요한 데이터를 추출하는 단계 링크 추출 및 다른 페이지 탐색: 다른 링크를 추출하고, 다음 단계로 이동하여 원하는 데이터를 추출하는 단계 데이터 추출 및 저장: 분석 및 시각화에 사용하기 위해 데이터를 처리하고 저장하는 단계 # 실습해보기 1. 필수 라이브러리 설치 pip install..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/HfVVU/btsxg25xFoE/85AGy01vpVZhPz5bJ5SKEK/img.png)
데코레이터 @login_required를 이용해서 새로운 글을 쓰는 create를 막아뒀을 때, create → 로그인을 하면 create로 다음 페이지가 이어져야하는데 막상 해보면 메인페이지인 index로 넘어가게 된다. 그렇다면, login을 하게되는 경로에 따라 이후 페이지를 다르게 출력하려면 어떻게 해야할까? # 방법1. input을 이용하기 login.html파일에서 form안에 input을 추가해준다. {% csrf_token %} {{ form.as_p }} 이때, input의 type은 hidden으로 해서 보이지 않게 함 input태그는 POST방식으로 넘어가기 때문에 views.py에서 함수를 입력할 때는 POST로 조회를 한다. # views.py 수정 def login(request..