본문 바로가기

분류 전체보기

(134)
2022-02-25::Django 29-35 29. Dynamic URL Routing path('prudcts/', dynamic_lookup_view, name="product"), 요청 url 다음에 오는 값을 동적으로 받아서 처리할 수있다. 이 경우에는 int형의 데이터 my_id로 값을 받았다. 해당 값은 비즈니스 로직 dynamic_lookup_view로 전달된다. def dynamic_lookup_view(req, my_id): obj = Product.objects.get(id=my_id) context = { "object": obj } return render(req, "products/product_detail.html", context) dynamic_lookup_view의 인자를 보면 다른 함수와 다르게 my_id가 있다. ..
2022-02-24::Django Forms Raw HTML form CSRF verified failed form 요청할때 머 추가한다. form을 get으로 요청할 때는 검색할 때와 같이 파라미터에 키워드가 추가된 채로 요청을 보낸다. action에는 요청을 보낼 url을 지정한다. get 요청인 경우 view에 지정된 로직에서 req.GET['{paramName}'] 메서드를 통해 파라미터를 받을 수 있다. get 요청은 보안에 취약하기 때문에 해당 데이터를 저장하는 것은 위험하다 따라서 클라이언트에서 데이터를 전송할 때는 POST 요청을 한다 POST 요청에 담긴 데이터의 경우에는 아래 메서드를 통해 접근이 가능하다 if req.method == "POST": req.POST.get('{name}') 위 코드는 데이터는 검증(validati..
2022-02-24::Django Read, Create with sqlite3 Render Data from the database with a model 데이터를 어떻게 받아올 수 있나? from products.models import Product products.model 파일에 있는 Product class를 가져온다. from products.models import Product obj = Product.objects.get(id=1) dir(obj) Class -> objects() -> get() 과정을 통해 해당 되는 데이터를 가져올 수 있다. obj라는 변수에 해당 데이터를 담았다. 그리고 마지막 줄에 추출한 obj 데이터로 접근 할 수 있는 세부 데이터들을 살펴 볼 수 있다. 물론 Class안의 필드에도 접근이 가능하다. 따라서 여기서 우리는 id=1인 데이터..
2022-02-20::Django models Django에서 app은 내부 기능 모듈을 의미한다. 기본 내장 app인 auth나 admin을 통해 계정을 관리할 수 있다. Django의 기본 경로는 /Users/macbook/Desktop/Computer/Django/trydjango/src app는 세분화된 하나의 기능을 수행해야 한다. 먼저 데이터를 매핑하고 저장하는 app 아래 명령어를 통해 장고 내에 앱을 생성할 수 있다. python manage.py startapp {appName} 디렉터리를 보면 products라는 디렉터리가 새로 생성되었음을 알 수 있다. 그 중 models.py에 db에 매핑할 모델을 설정할 수 있다. 예시는 아래와 같다. from django.db import models # Create your models h..
2022-02-20::Django 환경설정 가상환경 구성 가상 환경을 설정해 그 내부에서 패키지를 독립적으로 관리할 수 있다. venv를 사용하자 명령어 가상환경 생성 -p 파이썬 버전 지정 python3 파이썬3 사용 .현재 위치를 가상환경으로 사용 virtualenv -p python3 . 가상환경 실행 source bin/activate 가상환경 종료 deactivate 현재환경 패키지 목록 조회 pip freeze 가상환경을 실행시킨 다음 pip freeze명령어를 실행하면 해당 가상환경 안에서 설치한 패키지 목록을 확인할 수 있다. 다음 명령어를 통해 2.0.7 버전의 장고를 설치하자 pip install django==2.0.7 장고 프로젝트를 생성 django-admin startproject trydjango django-admin..
멀티쓰레드, HTTP API/CSR/SSR 쓰레드 HTTP에서 서블릿 객체를 누가 호출하지? 쓰레드 코드를 순차적으로 실행하는 것이 쓰레드이다. 동시처리가 필요하면 쓰레드를 추가해야 한다. 요청이 들어올 때마다 쓰레드를 생성해서 서비스를 처리한다. 쓰레드 풀 이러한 단점들을 극복하고자 쓰레드 풀을 생성한다. 미리 풀 안에 쓰레드를 생성해놓고 요청이 올때마다 풀에서 꺼내서 처리한다. 응답 이후 죽이지 말고 다시 풀에 반납한다. 쓰레드 풀이 비어있는 경우 대기 시키거나 거절할 수 있다. 톰캣 서버는 기본적으로 200개의 쓰레드를 사용해서 관리한다. WAS의 멀티 쓰레드 지원 WAS가 멀티 쓰레드 지원을 해준다! 개발자가 멀티 쓰레드 관련 코드를 신경쓰지 않아도 된다. 개발자는 마치 싱글 쓰레드 프로그래밍을 하듯이 편하게 해도 된다. 싱글톤 객체는 주..
WEB/WAS, Servlet WEB/WAS Web Server 웹에서 대부분의 데이터는 HTTP 기반으로 동작한다. 정적HTML, CSS, JS, Image, Video 등등을 전송한다. NGINX, APACHE로 대표된다. WAS HTTP 기반 동작 웹서버 + a 웹 서버는 정적 리소스만 제공하지만, WAS는 동적으로 어플리케이션 로직을 수행할 수 있다. 동적 HTML, HTTP API(JSON)제공 가능 서블릿, JSP, Spring MVC전달 가능 Tomcat등 차이는? 웹서버는 정적 리소스, WAS는 어플리케이션 로직이다. 차이가 다소 모호한 점도 있다. 보통 자바에서 서블릿 컨테이너 기능을 제공하면 WAS라고 한다. WAS는 어플리케이션 코드를 실행하는데 더욱 특화되어 있다. 웹 시스템의 기본 구성 - WAS, DB was..
빈 라이프사이클, AOP Bean Lifecycle 스프링 컨테이너는 초기화와 종료라는 라이프사이클을 갖는다. // 컨테이너 초기화 AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(AppContext.class) = new AnnotationConfigApplicationContext(Appcontext.class); // 컨테이너에서 빈 객체를 구해서 사용 Greeter g = ctx.getBean("greeter", Greeter.class); String msg = g.greet("스프링"); System.out.println(msg); // 컨테이너 종료 ctx.close(); 위 코드를 보면 AnnotationConfigApp..