본문 바로가기
728x90

Django29

템플릿(HTML) 에서 2차원 배열 출력하기 datas = [] datas.append({"key":"key1", "idx":"0", "title":"title1"}) datas.append({"key":"key2", "idx":"1", "title":"title2"}) 위와 같이 선언된 2차원 배열로 저장된 값을 KEY, VALUE 모두 출력하고 싶을 경우가 있다. 그럴 경우 아래와 같이 코딩한다. {% for row in datas %}    {% for key, value in row.items %}        {{ key }} = {{ value }} ||    {% endfor %}br>br>{% endfor %}  결과값은 아래와 같이 출력된다. [key] = [key1] || [idx] = [0]  || [title] = [title.. 2025. 2. 5.
커스텀 커맨드 만들기 - custom command Django에서는 앱마다 커스텀 커맨드를 만들 수 있다. (아직도 프로젝트, 앱이 헷갈리다 ㅡㅡ;) 간단하게 설명하면 test.py를 콘솔에서 아래와 같이 명령어로 실행시키기 위한 것이다.  . python manage.py test 위와 같이 명령어를 실행하면 test.py에 있는 소스가 실행된다.  이제 만드는 방법에 대해서 알아보자 1. 커스텀 커맨드를 만들 앱을 결정해서 해당 폴더에 아래 구조로 폴더 2개를 생성한다    (앱의 하위폴더에 생성하는게 중요하다) -> /management/commands 2. commands 폴더 밑에 test.py 소스를 작성한다.  (간단하게 메세지를 출력하는 소스이다) from django.core.management.base import BaseCommand.. 2024. 11. 14.
사용자 아이피로 접속허용여부 체크하기 특정 사용자만 접속하도록 아이피를 체크하는 기능이 필요해 기능을 만들어봤다. 해당 함수는 허용된 아이피 리스트를 만들고  사용자가 접속하면 아이피를 체크해서 허용 리스트에 포함되어 있는지 체크해서 있으면 PASS 를 없으면 BLOCK을 리턴하도록 만들었다.  def ipPassChk(request):     ipList = {"222.110.188.63", "222.110.188.64"}          xffInfo = request.META.get('HTTP_X_FORWARDED_FOR')     if xffInfo:         ip_list = xffInfo.split(',')         userIP = ip_list[0].strip()     else:         userIP = req.. 2024. 10. 16.
사용자 아이피, agent 가져오기 웹서비스에 접속하는 사용자 아이피를 가져오는 방법이다.  request 를 이용하는 방법으로 HTTP_X_FORWARDED_FOR 값을 체크해서 가져온다.  소스는 아래와 같다.  def getIP(request):     xffInfo = request.META.get('HTTP_X_FORWARDED_FOR')     if xffInfo:         ip = xffInfo.split(',')[0]  #첫 번째를 선택     else:         ip = request.META.get('REMOTE_ADDR')     return ip 함수를 실행하면 사용자의 아이피를 리턴한다. 다음은 사용자의 agent 정보를 가져오는 방법으로 아이피보다 더 간단하다  . user_agent = request... 2024. 10. 16.
등록된 아이피만 사이트에 접속허용 - whitelist Django에서 특정 IP 주소만 사이트에 접근할 수 있도록 제어하려면 MIDDLEWARE에서 요청을 검사하고, 특정 IP 주소만 허용하거나 차단하는 방법을 사용할 수 있습니다. 이를 위해 사용자 정의 미들웨어를 작성할 수 있습니다. 1. 미들웨어 생성: 프로젝트의 앱 내에 미들웨어 파일을 생성합니다. 예를 들어, middleware.py 파일을 만듭니다. 2. 미들웨어 코드 작성: 특정 IP만 허용하는 로직을 미들웨어에 작성합니다. 예시 코드는 다음과 같습니다. from django.http import HttpResponseForbidden ALLOWED_IPS = ['127.0.0.1', '192.168.0.1']  # 허용할 IP 주소 목록 class IPRestrictionMiddleware: .. 2024. 10. 15.
Django 보안 릴리스 발행소식 - 5.1.1, 5.0.9, 및 4.2.16 장고 보안 릴리스 발행소식이다.  이번 보안 릴리스는 Django 5.1.1 , Django 5.0.9 , Django 4.2.16 에 대해 릴리스를 발행하고 있다. 본인의 장고 버전을 확인해서 업그레이드를 권장한다.  아래는 보안 취약점에 대한 내용이다. - CVE-2024-45230: django.utils.html.urlize() 의 잠재적 서비스 거부 취약성 . urlize 및 urlizetrunc는 특정 문자 시퀀스를 포함하는 매우 큰 입력을 통해 잠재적으로 서비스 거부 공격을 받을 수 있습니다. . 심각도 : 보통 - CVE-2024-45231: 비밀번호 재설정 시 응답 상태를 통한 잠재적인 사용자 이메일 열거  . 처리되지 않은 이메일 전송 실패로 인해 django.contrib.auth.f.. 2024. 9. 5.