티스토리 뷰
Python/Django Framework (DRF)
Django CheatSheet2. Django에서 API를 호출하는 예제
4OurFuture 2024. 11. 27. 00:31728x90
반응형
1. 모델 정의하기
api_app/models.py에서 API 호출 이력을 저장할 모델을 정의합니다.
from django.db import models
class ApiCallHistory(models.Model):
endpoint = models.URLField()
method = models.CharField(max_length=10)
response_status = models.IntegerField()
timestamp = models.DateTimeField(auto_now_add=True)
모델을 정의한 후, 마이그레이션을 적용합니다.
python manage.py makemigrations
python manage.py migrate
2. API 호출을 위한 뷰 생성
api_app/views.py에서 API를 호출하고 이력을 저장하는 뷰를 생성합니다.
from django.shortcuts import render, redirect
import requests
from .models import ApiCallHistory
def call_api(request):
if request.method == 'POST':
endpoint = request.POST.get('endpoint')
method = request.POST.get('method', 'GET').upper()
try:
if method == 'GET':
response = requests.get(endpoint)
else:
response = requests.post(endpoint)
# 호출 이력 저장
ApiCallHistory.objects.create(
endpoint=endpoint,
method=method,
response_status=response.status_code
)
# 응답 표시
return render(request, 'api_app/call_api.html', {'response': response.json()})
except requests.exceptions.RequestException as e:
return render(request, 'api_app/call_api.html', {'error': str(e)})
return render(request, 'api_app/call_api.html')
3. 템플릿 생성하기
api_app/templates/api_app/call_api.html에 API 세부 정보를 입력하고 응답을 표시할 수 있는 폼을 생성합니다.
<h1>API 호출하기</h1>
<form method="post">
{% csrf_token %}
<label for="endpoint">API 엔드포인트:</label>
<input type="text" name="endpoint" id="endpoint" required><br>
<label for="method">메소드:</label>
<select name="method" id="method">
<option value="GET">GET</option>
<option value="POST">POST</option>
</select><br>
<button type="submit">API 호출</button>
</form>
{% if response %}
<h2>응답:</h2>
<pre>{{ response }}</pre>
{% endif %}
{% if error %}
<h2>에러:</h2>
<p>{{ error }}</p>
{% endif %}
4. 이력을 표시할 뷰 생성
api_app/views.py에 API 호출 이력을 목록으로 표시할 뷰를 추가합니다.
def api_call_history(request):
history = ApiCallHistory.objects.all().order_by('-timestamp')
return render(request, 'api_app/api_call_history.html', {'history': history})
5.이력을 표시할 템플릿 생성
api_app/templates/api_app/api_call_history.html에서 API 호출 이력을 표시합니다.
<h1>API 호출 이력</h1>
<table>
<tr>
<th>시간</th>
<th>엔드포인트</th>
<th>메소드</th>
<th>상태</th>
</tr>
{% for call in history %}
<tr>
<td>{{ call.timestamp }}</td>
<td>{{ call.endpoint }}</td>
<td>{{ call.method }}</td>
<td>{{ call.response_status }}</td>
</tr>
{% endfor %}
</table>
6. URL 설정하기
api_app/urls.py에 URL을 추가합니다:
from django.urls import path
from . import views
urlpatterns = [
path('call_api/', views.call_api, name='call_api'),
path('api_call_history/', views.api_call_history, name='api_call_history'),
]
메인 프로젝트의 urls.py에 위 URL들을 포함시킵니다.
python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('api_app/', include('api_app.urls')),
]
7. 서버 실행 후 결과 확인하기
마지막으로 서버를 실행하고 애플리케이션을 테스트합니다.
python manage.py runserver
아래 URL에서 애플리케이션을 접근할 수 있습니다:
http://localhost:8000/api_app/call_api/`와 http://localhost:8000/api_app/api_call_history/`.
728x90
반응형
'Python > Django Framework (DRF)' 카테고리의 다른 글
[CentOS] MySql 설치 오류 (2) | 2025.01.09 |
---|---|
Windows IIS 서버에 Django 애플리케이션 배포 (2) | 2024.12.09 |
Django CheatSheet 빠르게 설정하기 (0) | 2024.11.25 |
Django LDAP으로 로그인 하도록 설정 하기 (1) | 2024.09.23 |
Django REST Framework (DRF) 설치 및 초기 구동 가이드 (Quick Start) (0) | 2024.08.26 |
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 케라스
- chat gpt 모델 api 가격 예측
- python import
- 토치비전
- chat gpt 모델별 예산
- chat gpt 모델 별 가격
- python 문자열 슬라이싱
- 1164회 로또
- 텍스트 전처리
- 로또 ai
- postgre
- github action
- Numpy
- 로또 1164회 당첨
- 텍스트 마이닝
- chat gpt api 비용 계산
- 티스토리챌린지
- chat gpt 한국어 가격
- chat gpt 4o 예산
- chat gpt 가격 예상
- 오블완
- 인공지능 로또 예측
- Python
- GitHub
- TorchVision
- f-string
- 장고 orm sql문 비교
- Django
- 1165회 로또
- 클래스형 뷰
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함