1. 장고 설치: pip install django
2. 프로젝트 생성(config): django-admin startproject config .
3. 실행: python manage.py runserver
4. 127.0.0.1:8000/admin // 관리자 페이지 확인
5. python.exe manage.py migrate // 기본 테이블 생성
6. python manage.py createsuperuser // 관리자 이름, pw 등록
admin
admin12345
7. python manage.py startapp 앱명 // 앱 등록
8. settings.py의 INSTALL_APPS에 앱 등록 // 앱을 추가하면 제일 먼저 해야할 일
9. [models.py] models.py db 만들기
--> Search라는 모델 정의하고 있음
--> site_name: CharField로 정의되어 있으며, 최대 100자까지의 문자열 저장할 수 있는 필드
--> url: URLField로 정의되어 있으며, 사이트의 URL 저장하는 필드. 입력된 값이 유효한 URL인지 검증하고 저장
10. >> python manage.py makemigrations search // makemigrations: 모델의 변경사항 추적해서 기록
>> python manage.py migrate // migrate: 데이터베이스에 모델의 내용 반영(테이블 생성, 컬럼 생성...)
--> 붉은 선 'id' 자동 생성된 것을 볼 수 있음. 나중에 primary key, foriegn key에 활용됨
11. [admin.py] from django.contrib import admin // 내가 만든 모델을 관리자 페이지에서 관리할 수 있도록 등록
12. 실행(db 등록된 것 확인)
13. [models.py] db 표현 변경
[뷰 만들기]
1. [search\views.py]
클래스형 뷰(정해진 클래스(제너릭뷰), 함수형 뷰(자기가 임의로 만드는 뷰) 2가지가 있는데 제너릭 뷰를 사용하려면 list 뷰를 하나 불러와야 함
2. [urs.py] - config
- 사용자가 어떤 URL 을 입력했을 때 웹 서버 뷰를 동작할 것인가가 필요
- include함수는 다른 URLconf들을 참조할 수 있도록 도와줌.
- django가 함수 include()를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고,
남은 문자열 부분을 후속처리 위해 include된 URLconf로 전달
3. [search\urls.py]
-> 실행하면 오류 발생(템플릿 없음)
4. [templates-search_list.html]
- search 앱에 templates 디렉터리 생성 후 그 안에 search 똑같은 이름으로 디렉터리 생성
- {% for search in object_list %}
// {% ... %} 기능태그 object_list는 search의 전체 내용 가져올 때 사용, object는 하나하나 상세부분 내용 가져올 때 사용
- {{ }} // 출력 태그
[추가 (Create)]
1. [views.py]
--> model = Search: 뷰에서 사용할 모델을 Search로 지정
--> fields = ['site_name', 'url']: 사용자에게 입력받을 필드 지정. 사용자로부터 site_name과 url 입력받을 것
--> success_url=reverse_lazy('list'): 객체 생성이 성공했을 때 이동할 페이지의 URL을 지정. list라는 URL 패턴으로 이동
reverse_lazy 함수는 URL 패턴을 가지고 URL 생성
--> template_name_suffix = '_create': 뷰에서 사용할 템플릿 파일의 이름 지정. 기본 템플릿 파일명에 '_create' 추가해 사용
2. [search-urls.py]
--> SearchCreateView.as_view(): 이 패턴이 일치할 때 SearchCreateView클래스의 인스턴스를 생성하고 이를 기반으로 하는 뷰 실행.
as_view() 메서드는 클래스 기반 뷰를 함수 기반 뷰로 변환하여 사용할 수 있도록 해주는 메서드
--> 이 URL 패턴은 'add/' 경로에 요청이 들어왔을 때 SearchCreateView를 실행하며, 이를 'add'라는 이름으로 식별.
3. [search_create.html]
--> {{ form.as_p }}: 폼 객체를 HTML의 <p> 태그를 사용하여 렌더링 하는 것.
as_p 메서드는 각 필드를 하나의 <p> 태그 안에 렌더링한다.
--> data가 필요하면 models.py
--> 추가, 읽기, 수정, 삭제 가 필요하면 views.py
--> view 가 동작하려면 사용자들이 이용할 수 있게 하려면 urls.py
--> url을 통해 뷰가 구동되었을 때 화면을 보여주는 경우 template-html 파일 필요
[상세보기 (Detail)]
1. [views.py]
--> from .views import * 로 변경해도 됨
2. [urls.py] - search
3. [search-detail.html]
--> 실행 후 '다음'에 마우스 갖다대면 밑에 ‘127.0.0.1:8000/search/detail/2/' 으로 표현됨
[업데이트 (Update)]
1. [views.py]
2. [urls.py] - search
3. [search_update.html]
4. [models.py]
- update 버튼을 누르면 데이터는 수정이 되었지만 오류
- define a get_ansolute_url 방법으로 수정
--> reverse('detail', args=[str(self.id)]): detail이라는 URL 패턴을 역으로 해석하여 해당 패턴에 필요한 매개변수로 현재 객체의 id를 사용하여 URL을 생
[삭제 (Delete)]
1. [views.py]
2. [urls.py]
3. [search_confirm_delete.html]
'학교 > DJANGO' 카테고리의 다른 글
Django 기말고사 대비 정리 (1) | 2024.06.19 |
---|---|
Django 중간고사 대비 정리 (1) | 2024.04.21 |
Django 기말시험대비정리 (0) | 2023.12.18 |