학교/DJANGO

Django CRUD 생성

서윤-정 2023. 12. 18. 03:02

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