Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 강제상속
- 가상요소선택자
- !important
- css여백
- style상속
- css설정
- css너비설정
- margin
- css테두리
- padding
- CSS border
- CSS Diner
- 스타일상속
- css상속속성
- 선택자게임
- css여백설정
- CSS선택자
- css
- html의구조 #태그 #빈태그
- css복합선택자
- css단위
- 가상클래스선택자
- 선택자우선순위
- 속성선택자
- css기본선택자
Archives
- Today
- Total
잊기
[python, django] django(장고) project 생성, application 개발(1) 본문
django의 app probramming
project : 전체 프로그램
application ( app ) : 모듈화된 단위 프로그램 ( react의 컴포넌트와 같음 )
=> application 이 모여서 project를 구성, 재사용하기 좋은 application 을 지향 !
MVT패턴
Model View Controller 패턴과 비슷하지만 용어를 다르게 사용
Model View Template
- Model : 사용될 데이터의 정의를 담고있는 클래스 ( models.py )
app에서 사용할 데이터베이스를 클래스로 매핑하여 코딩가능,
모델클래스의 속성은 테이블의 컬럼에 매핑 - View : 웹 요청을 받아 분석, 로직에 맞는 처리를 하고 결과를 HTML로 반환 ( views.py )
함수, 클래스의 메서드 등으로 작성 - Template : 응답받은 HTML텍스트를 해석, UI를 표시 ( *.html 확장자 _ setting.py )
URLconf
- urls.py 파일에 URL처리함수(View)와 매핑하는 파이썬 코드를 작성 ( Urlconf / URL / 뷰매핑 )
- urls.py - 프로젝트의 urls를 모아서 하나의 폴더로, 세부적으로 컴포턴트마다 생성해도 OK
코딩순서 ( Model - view / template )
- 모델 : 테이블 관련사항 개발 ( models.py admin.py )
- URLconf : URL 및 뷰 매핑 관계 정의 ( urls.py )
- 템플릿 : 화면 UI 개발 ( templates / 디렉토리 하위의 *.html 파일들 )
- 뷰 : 애플리케이션 로직 개발 ( views.py )
project 생성
project , application 등 생성 수정시엔 항상 cd (: change diectory ) 해당 폴더.. 이동 후 진행))
- django-admin startproject 폴더명 : 프로젝트 생성
- mv 변경할(전)폴더 이름 바꿀(후)이름 : 폴더명 변경
- chmod 777 변경할(전)폴더 : 권한없음 메세지 뜨면 폴더명 변경 권한 부여 후 다시 변경
(vs code 재실행)
- python manage.py startapp 앱이름 : 앱 생성 ( 프로젝트 생성시 manage.py 파일이 자동 생성)
- 프로젝트 설정 파일 변경 ( VS Code : setting.py )
# 1. 모드에 따라 ALLOWED_HOSTS 지정
# debug = true : 개발모드, false : 운영모드 (배포시 false로 변경)
DEBUG = True
# 개발모드 : default ['localhost', '127.0.0.1]로 간주
# 운영모드 : ip( 명령프롬프트 : ipconfig 에서 확인 )나 도메인 추가 지정
ALLOWED_HOSTS = ['192.168.0.204', 'localhost', '127.0.0.1']
# 2. 프로젝트에 포함되는 App들은 모두 설정파일에 등록 !!
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls.apps.PollsConfig' # 추가 생성한 앱(의 클래스) 추가기재
]
# 3. 프로젝트에 사용될 DB엔진 명시 (default : SQLite3 (내장DB))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 4. TIME_ZONE 지정, 'UTC' : 세계 표준 시 / 한국 시간 ('Asia/Seoul')
TIME_ZONE = 'Asia/Seoul'
- python manage.py migrate : 기본 DB 적용, 기본 테이블 생성 (실행시 db.sqlite3 생성)
- python manage.py runserver : 서버 실행, 확인 (서버 실행시 수정내역 바로 반영)
- ctrl + c : 실행종료
- python manage.py createsuperuser : superuser(관리자) 생성 (admin페이지 사용권한 O)
ID / mail (null ok) / PW 입력 - python manage.py makemigrations : DB에 변경이 필요한 사항을 추출,
(vscode 에 table 생성 후 실행) 테이블 조회 -> 파일번호 확인 - python manage.py migrate : DB에 변경사항을 반영
- python manage.py sqlmigrate polls 0001(파일 번호)
Model ( 테이블 생성, models.py )
class Question(models.Model): # models.Model 클래스 상속
question_text = models.CharField(max_length=200) # columns_name , 속성(Field)정의
pub_date = models.DateTimeField('date published') # id를 PK로 자동 생성, 부여
def __str__(self):
return self.question_text # __str__() : 객체를 문자열로 표현하는 함수
- Admin 반영 ( admin.py )
from django.contrib import admin
from polls.models import Question, Choice # models.py에서 정의한 클래스 import
admin.site.register(Question) # admin.py 에 등록,
admin.site.register(Choice) # 수정시, models.py / admin.py 함께 수정
- python manage.py makemigrations
- python manage.py migrate : 데이터베이스 변경사항 반영
- URLconf ( urls.py )
urlpatterns = [
path('admin/', admin.site.urls),
path('polls/', include('polls.urls'))
]
# path, admin모듈 : 장고제공, views모듈 : URL스트링 매칭시 호출되는 뷰함수
# 일정한 형식이므로 그대로 코딩, 위에서 아래로 진행하기에 순서는 주의
# path() 에서 URL 작성시 '/'를 뒤에만 붙이는것을 권장
app_name = 'polls'
urlpatterns = [
path('', views.index,name='index'),
# /polls/ 매칭시, views.index(request) 함수 호출
path('<int:question_id>/', views.detail, name='detail'),
# /polls/[i] 매칭시, views(request) 함수 호출
# <> 부분이 정수(int)이면 매치, 매치된 문자열을 question_id에 할당
]
# app_name을 부여 재사용, 수정이 용이하게 사용 (권장)
# app_name 변수가 같아도 클래스가 다르므로 class1:polls , class2:polls로 구분됨 (namespace)
# name : URL패턴별로 이름 부여, 탬플릿 파일에서 사용
'Python _ Django' 카테고리의 다른 글
[python, django] django(장고) application 개발(2) View, Template (0) | 2023.02.24 |
---|---|
[python, django] django(장고) shell(셸)을 이용한 데이터 조작 (0) | 2023.02.23 |
[python, django] django (장고) 환경 설정, 가상 환경 설정 (0) | 2023.02.22 |