django에서 사용.
view.py에서 랜더링한 값을 templates의 html에 연결하여 웹사이트를 구축할 때 사용.
html에서 반환된 데이터를 가지고 웹페이지를 구성할 수 있음.
render는 HttpResponse 객체를 반환.
- input : resquest
- output : Httprespnse
(HTML 페이지 생성을 위한)
from django.shortcuts import render
from .models import Question
return render(request, "<연결할 html 주소>", {"<데이터 칼럼>":<데이터>})
# view.py
from django.http import Http404
from django.shortcuts import render
from .models import Question
def detail(request, question_id):
try:
question = Question.objects.get(pk=question_id)
except Question.DoesNotExist:
raise Http404("Question does not exist")
return render(request, "polls/detail.html", {"question": question})
# html
<h1>{{ question.question_text }}</h1>
<ul>
{% for choice in question.choice_set.all %}
<li>{{ choice.choice_text }}</li>
{% endfor %}
</ul>
$ pip install djangorestframework
$ pip install django-filter
#/djangoProject/settings.py
INSTALLED_APPS = [
...,
'rest_famework',
]
from rest_framework import serializers
from .models import <모델명>
class <serializer 명>(serializers.Serializer):
<연결하고자 하는 테이블의 칼럼명> = serializers.IntegerField()
칼럼명 = serializers.<칼럼타입>
칼럼명 = serializers.CharField()
칼럼명 = serializers.CharField()
칼럼명 = serializers.CharField()
class Meta:
model = <연결하고자 하는 테이블명>
from .models import <모델명>
from .serializers import <serializer 명>
변수 = serializer 명(데이터)
serializer = QuestionSerializer(question)
return Response(serializer.data)
from django.shortcuts import get_object_or_404
from .models import Question
from .serializers import QuestionSerializer
class QuestionDetailView(APIView):
def get(self, request, question_id):
question = get_object_or_404(Question, pk=question_id)
serializer = QuestionSerializer(question)
return Response(serializer.data, status=status.HTTP_200_OK)
4. 확인
terminal에 python manage.py runserver하여 웹페이지 접속시 아래와 같은 창에 데이터가 뜨면 성공
데이터는 json 형태로 출력됨
[
{
"id": 1,
"context":"오늘은 무슨 요일?",
...
},
{
"id": 2,
"context":"오늘은 무슨 달?",
...
}, ...
]
HTML :
DRF :
redirect :