본문 바로가기

(87)
클래스형 뷰 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%} 태그는 상속을 받는다는 것을 표..
템플릿 활용법2 -템플릿 태그 형식 { % 태그 %} 종류 {% for %} 예시 {% for A in A_list %} # A_list 에서 A를 반복해서 뽑아오기 #!!참고 for 태그에 사용되는 변수들 foorloop.counter 등의 변수들 존재 {% if %} 예시 {% if 조건 %} {% elif 조건 %} {% else %} {% endif %} {% csrf_token %} Corss Site Request Forgery 방지 태그 위치는 form 엘리먼트 첫 줄 다음 {% url %} 예시 {% url 'namespace: view-name' arg1 arg2 %} namespace :urls.py 파일의 include() 혹은 app_name 에 정의한 namespace 이름 view-name: urls.py 파..
템플릿 활용법 0.템플릿의 위치 템플릿은 INSTALLED_APPS 디렉토리 하위의 templates 하위 디렉토리를 검색한다. templates는 자신이 직접만들어야 하는 디렉토리이다. 1.템플릿 변수 {{템플릿 변수}} #주의점!! 변수.속성 의 형식 으로도 표현이 가능 하다 예시 foo.bar 근데 . 에 주의할 점이 있다. 처음에 foo가 딕셔너리 타입인지 확인한다. 만약 있다면 foo['bar'] 로 해석 bar 가 key 딕셔너리가 아니라면 foo의 bar 속성을 찾는다. 즉, foo.bar 로 해석 그것도 아니면 foo가 리스트인지 확인 그럼 foo[bar]로 해석 만약 변수가 없으면 빈 문자열로 채워준다. setting.py 에서 바꿀 수 있다. 2.템플릿 필터 shell 의 필터처럼 출력 결과 변경에 ..
python shell 에서의 CRUD 처리문 python manage.py shell로 쉘 기동 쉘에서는 데이터를 보다 효율적으로 관리가 가능 쉘은 SQL이 아니기 때문에 대,소문자를 구별한다. __로 객체간의 관계를 표현할 수 있다. !주의! 1:n 관계에서는 foreign key로 정의되어 있는 테이블이 있는데 만약 1:n = Question: Choice 라면 Choice 에서 Question을 검색하려면 그냥 question 속성을 Question 에서 Choice를 검색하려면 Choice_set 속성을 사용한다. CREATE 문 --insert문 save()로 처리 예시 q =Question(question_text='abc', pub_date = timezone.now()) q.save() READ 문 --select문 --where 절..
djngo 시작하기 -MTV 실습 파이썬 다운 cmd 키고 #장고 다운받기 pip install django cd 명령어로 자기가 원하는 폴더로 이동해서 다음과 같이 입력 django-admin startpoject 프로젝트명 프로젝트명 경로에서 > python manage.py startapp polls #polls 라는 것은 장고가 정해준 것 중 하나 이름을 바꿔도 되긴 한다. #환경설정하기 -- 파이참에서 py파일 열어서 해도 된다. 프로젝트명 경로 > notepad settings.py setting.py에서 타임존 설정 utc =>Aisa/Seoul #db 시동 #자체적으로 sql을 가지고 있다. sql이 아닌 다른 db를 쓸거면 settings.py에서 바꾸자 cmd에서 프로젝트 명 > python manage.py migra..
파이참 Django 인터프리터 추가 오류 파이참에서 setting > python interpreter > install>Django 검색>install package==>오류! 해결방법은 최신버전인 pip를 다운그레이드 시켜야했다. 터미널에서 python -m pip install pip==20.2.2 한 뒤 다시 install package 를 하였더니 정상적으로 작동한다.