웹/Django (20) 썸네일형 리스트형 테스트 하기 docs.djangoproject.com/ko/3.1/intro/tutorial05/ 첫 번째 장고 앱 작성하기, part 5 | Django 문서 | Django Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate docs.djangoproject.com 를 참고하였다. 쉘 환경에서 테스트 실행 python manage.py test polls 뷰 테스트 >>>from django.test.utils import setup_test_environment >>> setup_test_environment() >>> fro.. 배포시 주의점 1. secrey key txt로 따로 저장하자 SECRET_KEY = os.environ['SECRET_KEY'] 혹은 with open(os.path.join(BASE_DIR,'웹 디렉토리','secret_key.txt')) as f: SECRET_KEY =f.read().strip() 2.DEBUG false 로 하자, 노출되면 안되는 항목이다. 그리고 이 경우 ALLOWED_HOSTS를 지정하자 DEBUG = true로 할 경우에는 자동으로 ALLOWED_HOSTS가 로컬호스트가 된다. 3.STATIC_ROOT STATIC_ROOT =os.path.join(BASE_DIR,'웹 디렉토리','satatic) 하고 정적파일 지정된 디렉토리에 모으기 !!주의 STATICFILES_DIRS 에 STATI.. 장고 프로젝트 순서2 - 뷰 클래스형 뷰로 정의 1.인덱스 페이지 인덱스 페이지는 TemplateView 를 상속해서 구현하면 편하다 오버라이딩이기 때문에 template_name 변수를 지정해야한다. 템플릿 시스템으로 넘겨줄 컨텍스트 변수가 있으면 def get_context_data() 재정의 한다. 변수는 context= super().get_context_data() 재정의 이때 super() 꼭 쓰자 return도 필수이다. 2.리스트뷰 페이지 ListView를 상속받는다. model 필드만 재정의하면 된다. 디폴트 속성이 있는데 컨텍스트 변수로 object_list를 사용하고 템플릿 파일을 소문자모델명_list.html 로 사용한다. 예시 class BookList(ListView): model = Book #Book에 .. 장고 프로젝트 순서 기본1 -모델 MTV 에서 모델 models.py에서 1.테이블 정의 class 테이블명(models.Model): 칼럼1 = models.필드 제공 함수() 칼럼2 = models.ManyToManyField('관계테이블') #N:N 관계에 있을때의 필드 칼럼3 = models.ForeignKey('FK',on_delete=models.CASCADE) #on_delete는 필수지정 def __str(self): return self.표시하고 싶은 테이블명 2. admin.py에 등록 터미널에 python manage.py createsuperuser 로 admin을 만들고 admin.py에 admin.site.register(테이블) 3.URLconf 등록 프로젝트 Urls.py 에 어플리케이션 url 등록 제네릭 뷰 제네릭 뷰는 클래스형 뷰이다. 제네릭뷰란 장고가 제공하는 공통된 로직의 뷰이다. 제네릭 뷰를 상속해서 클래스형 뷰를 만들때가 많다. 분류 1.Base View : 뷰 클래스를 생성하고, 다른 제네릭뷰의 부모 클래스 제공, 기본 제네릭 뷰 2.Generic Display View : 객체의 리스트나 특정 객체의 정보 제공 3.Generic Edit View : 객체 생성, 수정, 삭제 4.Generic Date View : 날짜 객체의 연/월/일 페이지 제공 클래스형 뷰에서의 폼 처리 과정 1.최초의 GET : 사용자에게 폼을 처음으로 보여줌 2.유효한 데이터를 가진 POST :데이터를 처리함, 주로 리다이렉트 3.유효하지 않은 데이터를 가진 POST: 보통은 에러메시지 출력+ 폼 재출력 클래스형 뷰 A.진입메소드 진입메소드는 클래스를 선언하는 메소드이다. 예시 urls.py에서 urlpatterns=[ path('about', MyView.as_view()) ] 이때 as_view()가 진입메소드이다. 이런 진입메소드는 인스턴스를 생성하고 dispatch()메소드를 호출 dispatch()는 get, Post 형식을 구별하고 인스턴스 내에서 해당 이름의 메소드 요청을 한다. 메소드가 없으면 HttpResponseNotAllowed 예외를 띄운다. as_view()와 dispatch() 는 django.Views.generic.View 클래스에 정의되어 있다. django.Views.generic.View 를 상속받는 클래스 를 만들자. B.클래스형 뷰는 함수형과 클래스형이 있다. 함수형 예시 def.. 폼 처리하기 장고는 form의 데이터를 전송할 때 오로지 post방식만 사용한다. 모델 클래스 -- 데이터베이스 매칭처럼 폼 클래스 -- input엘리먼트에 매핑됨 데이터가 있는 폼을 bound form 데이터가 없는 폼을 unbound form 이라고 함 폼 클래스를 따로 정의해서 view에서 처리한다. 각 input type 별로 필드 타입이 다르다. 예시 text타입은 CharField(label="",max_length=) textarea 타입은 CharField(label="",max_length=100, widget=forms.Textarea) 장고의 모든 폼 클래스는 is_valid()를 통해 유효성 검사를 한다. 유효하면 true를 리턴, cleaned_data 속성에 넣는다. 폼 클래스의 렌더링 {{.. 템플릿 활용법3 - 템플릿 상속 장고는 html 안에서 템플릿 상속을 하는 것을 권장한다. 그 중 주의점 1.extends 태그는 가장 먼저 나와야 한다. 2. 공통사항을 가능한 많이 뽑아서 1단계 부모 템플릿에 {%block%} 태그가 많을 수록 좋다. 3.부모 템플릿의 {%block%} 안의 내용을 그대로 사용하고 싶을 때 자식 템플릿은 {{block.super}} 를 한다. 4.가독성의 이유로 {%endblock 블록이름 %} 의 형식도 있다. {% block %} 태그로 상속할 부분을 정한다. title블록, sidebar블록, content블록이 있다. 예시 {%block sidebar %} {% endblock% } {%block content %} {%endblock%} {%extends%} 태그는 상속을 받는다는 것을 표.. 이전 1 2 3 다음