CDW (Coding Discussion World)
python(django) - 장고로 웹페이지 만들기 (2) 본문
이전 편에서는 django 프로젝트 생성을 위해 가상 환경을 만들고 필수 패키지 및 프로젝트를 생성하였다.
2022.11.05 - [Python/Do something] - python(django) - 장고로 웹페이지 만들기 (1)
이번에는 본격적으로 app을 생성하고 내가 만든 html을 화면에 띄워 보도록 하자.
python manage.py startapp로 원하는 app 이름을 만들자.
이름은 아무거나 해도 상관없지만 django에 샘플로 나와있는 blog를 app 이름으로 해보았다.
python manage.py startapp blog
app을 생성하면 프로젝트 폴더에 blog라는 디렉토리가 새로 생성되고 admin.py, views.py, models.py 등 여러가지 파이썬 파일들이 생성되는 것을 알 수 있다.
django에서는 views, urls, models 가 유기적으로 연결되어서 서버를 구성하고 있는데 이들 간의 구조 등 관련된 설명은 구글에서 찾아보자. 여기서는 설명보다는 직접 만들기에 집중한다. (다만 궁금한 점이 있으면 언제든 댓글 환영)
현재 나의 웹페이지 주소는 http://127.0.0.1:8000/ 인데 새로 만든 blog app과 관련된 내용은 http://127.0.0.1:8000/blog/로 이루어지도록 해야 관리가 편할 것이다.
이에 이전 편에서 프로젝트를 생성했던 디렉토리에 있는 C:\pyminv\pymin_django2\pymin_j2/urls.py 파일을 열고 아래와 같이 include를 import 하고 /blog를 추가하도록 한다.
path('blog/', include('blog.urls')),
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')),
]
다음으로는 신규로 추가한 blog app을 C:\pyminv\pymin_django2\pymin_j2/settings.py 파일 안에 추가한다.
settings.py를 열고 내용을 찾다보면 INSTALLED_APPS라는 곳이 있는데 제일 아래 blog를 추가하면 된다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
앞으로 django를 진행하다 보면 어떤 설정은 프로젝트 디렉토리에 있는 파일에 하고, 또 어떤 설정은 app 디렉토리 안에 있는 디렉토리에 설정할 것이다. 그때그때 상세 경로를 찍을테니 잘 확인하고 설정하면 된다.
(현재 프로젝트명 : pymin_django2, 현재 생성된 app : blog)
이번에는 /blog/ 다음에 어떻게 할지를 등록해야 한다. blog app 디렉토리에 urls.py 파일을 만들고 아래 내용을 붙여넣자.
C:\pyminv\pymin_django2\blog\urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
http://127.0.0.1:8000/blog/로 끝날 경우 같은 경로의 views.py의 index 함수를 참조하겠다는 말이다. views.py에 뭐 한게 없기 때문에 blog app 디렉토리의 views.py를 아래와 같이 변경한다.
from django.shortcuts import render
# Create your views here.
def index(request):
return render(
request,
'blog/base.html',
)
그럼 http://127.0.0.1:8000/blog/로 올 경우에 base.html 파일을 보여주겠다는 말이다.
이제 다시 django를 시작하고 http://127.0.0.1:8000/blog/ 에 접속해보자.
(pymin_django2) PS C:\pyminv\pymin_django2> python manage.py runserver
아래처럼 TemplateDoesNotExist가 뜨면 정상이다. 우린 아직 html 파일을 만든적이 없다.
이제 html 파일을 만들고 이를 저장해보자.
우선 blog app 디렉토리에 \templates\blog 폴더를 만들고 여기에 base.html을 만들 예정이다.
C:\pyminv\pymin_django2\blog\templates\blog
base.html 파일을 만들고 아래 내용을 붙여 넣는다.
{% load static %}
<html lang="ko">
<head>
<title>Blog</title>
</head>
<body>
<h1> hello </h1>
</body>
</html>
그리고 웹에 http://127.0.0.1:8000/blog/ 을 입력하면 위에서 저장해둔 base.html이 출력됨을 확인할 수 있다.
처음 글에서도 썼지만 이런 단순한 html을 보여주기까지는 flask가 훨씬 쉽다. 그럼 django의 장점은 무엇이 있을까?
djanog에서 views.py를 보여줄때 사용할 수 있는 방법은 Function base인 FBV와 Class base인 CBV가 있다. FBV는 말그대로 내가 함수를 만들어서 보여주는 거고(위에 views.py에 index 함수를 만든 것처럼), CBV는 django의 class를 불러와서 기본적인 기능을 가져다 쓰면서 만드는 방식이다.
적응만 된다면 이미 만들어진 CBV가 훨씬 편한듯하고 특별히 원하는 부분이 있으면 class 일부만 바꾸어주어도 된다. 이 부분들은 뒤에서 다루어보려고 한다.
우선 html을 띄워주는 것까지 했으니 다음에는 models.py를 이용해서 db table을 만들고 여러 정보를 넣어보자.
'Python > Do something' 카테고리의 다른 글
python(django) - 장고로 웹페이지 만들기, bootstrap modal (4) (0) | 2022.11.10 |
---|---|
python(django) - 장고로 웹페이지 만들기, bootstrap(부트스트랩) (3) (2) | 2022.11.05 |
python(django) - 장고로 웹페이지 만들기 (1) (0) | 2022.11.05 |
python(kivy) - kivy로 안드로이드 App 만들어보기 (3) (0) | 2022.10.28 |
python(kivy) - kivy로 안드로이드 App 만들어보기 (2) (0) | 2022.10.28 |