Backend/Django

문제 프론트 서버에서 django로 api 요청보냈을때 options method로 반환되고 콘솔에 CORS에러 발생 해결 django-cors-header 적용 (https://github.com/adamchainz/django-cors-headers) 해결과정 CORS에 대해 알아보고, django에 관련 기능이 있는지 구글링 원인분석 1) CORS (Crosss-Origin Resource Sharing) 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조 2) fetch로 api를 가져올 때는 Http를 사용 이 때 브라우저는 요청 header에 출처를 담아 origin 필드로 전송 서버가 이를 보고 응답을 할 때 header에 ac..
터미널이 갑자기 venv에서 벗어났을 경우 다시 venv에 들어가기 위한 방법을 기록하기 위해 작성 해당 프로젝트 경로에서 아래를 입력한다. $ venv/Scripts/activate
Serializer안에서 request.user을 사용하는 방법을 기록하기 위해 작성 Response를 보낼 때 context 안에 request를 담아서 보내면 된다. 아래는 예시이다. def get(self, request): return Response(UserSerializer(request.user, context=request # context에 request담아서 Serializer에 전송 ).data) class HobbySerializer(serializers.ModelSerializer): same_hobby_users = serializers.SerializerMethodField() def get_same_hobby_users(self, obj): user = self.context..
Poetry 공부 중 기록을 위해 한글 주석을 남겨 에러가 발생 / 해결과정을 기록하기 위해 작성 에러 UnicodeDecodeError: 'cp949' codec can't decode byte 0xec in position 546: illegal multibyte sequence 원인 pyproject.toml 내 한글 주석 (windows 환경에서만 발생) 해결 한글 주석 제거
JsonResponse 왜 사용하는가? - response를 커스터마이징 하여 전달할때 사용한다 - http status code에 더하여 메세지를 입력해서 전달할 수 있다. 특징 HttpResponse의 subclass로, JSON-encoded response를 생성할수 있게 해준다. 대부분의 기능은 superclass에서 상속받는다. default Content-Type header = application/json >>> from django.http import JsonResponse # import from django.http >>> response = JsonResponse({'foo': 'bar'}) # 첫번째 argument는 dictionary 이어야한다 >>> response.con..
serializer에 ManyToMany Field를 등록할 때에는 속성값을 통해 Serializer에게 알려주어야한다. 아래는 ManyToManyField인 hobby를 serializer에 등록하는 예시이다. class UserProfile(models.Model): user = models.OneToOneField( to=User, verbose_name="사용자", on_delete=models.CASCADE, primary_key=True) hobby = models.ManyToManyField("Hobby", verbose_name="취미") introduction = models.TextField("소개") birthday = models.DateField("생일") age = models...
same_hobby_users = serializers.SerializerMethodField() def get_same_hobby_users(self, obj): return "Test" class Meta: model = HobbyModel fields = [ "name", "same_hobby_users" ]
1. args, kwargs를 사용하는 예제 코드 def sum_numbers(*args): return sum(args) class UserView(APIView): def get(self, request): numbers = request.data.get("numbers", []) result = sum_numbers(*numbers) return Response({'sum': result}) ''' [input] { "numbers": [1,2,3,4] } [output] { "sum": 10 } ''' 2. mutable과 immutable은 어떤 특성이 있고, 각 특성에 대한 자료형 [mutable] - 값이 변할 수 있다. - List / Dictionary [immutable] - 값이 변할..
장고 프로젝트에 등록되지 않은 파일에서 장고를 사용할 경우 다음과 같은 오류가 나타난다. django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings. 등록되어 있지 않은 파일을 아래와 같이 직접 장고에 등록해줘야한다. import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE",..
YYYY-MM-DD 형태로 변경하는 방법은 아래와 같다. {{ value|date:"Y-m-d" }}
같은 페이지를 사용할 때 어떤 url을 통해 왔는지 검사하며 값을 바꿔줄 때 사용할 수 있는 유용한 방법이다. {% if request.resolver_match.view_name == 'show_user_page' %}something{% endif %} ex) {% if request.resolver_match.view_name == 'get_recommend_list' %} 추천 도서 {% else %} 전체 도서 {% endif %}
html 모듈의 escape와 unescape와 동일한 기능으로, 사용법은 아래와 같다 autoescape {% autoescape off %} 내용 {% endautoescape %}
- db.sqlite3 삭제 - migrations 내 파일 삭제 - makemigration - migate
터미널에 pip freeze > requirements.txt 입력 시 requirements.txt 라는 텍스트 파일이 생성된다. 아래와 같이 개발환경의 버전들을 텍스트 파일로 확인할 수 있다. 협업 시 버전을 일치 시키는데에 유용할 것 같다.
django rest_framework에서 serializers.py의 create 함수 작성 후 테스트 중 에러가 발생했다. 에러가 발생한 코드와 에러는 아래와 같다. image_set = self.context['request'].FILES image_set = self.context['request'].FILES KeyError: 'request' 에러 해결을 위해 구글링 한 결과 아래와 같은 힌트를 얻을 수 있었다. while instantiating your serializer do like this ser = Serializer(context={"request": request}) 이유는 views.py에서 serializer를 선언할 때 request를 담아 context를 정의하지 않았기 ..
Sungwoo Koo
'Backend/Django' 카테고리의 글 목록