갬미의 성장일기
[Django] 웹페이지 만들기 - APP 추가하기, HTML 실행하기 본문
오늘은 Django를 사용해보았다
Pyrhon - 3.10.0
Django - 3.1.3
IDE - PyChame
네이버 사이트 = project
그 안의 메일, 카페, 블로그 .. = app(앱)
전체 사이트 , 각각의 기능 = project , app
전체를 만들고 앱을 구현해야 함
APP 추가하기
Django 프로젝트를 만들 폴더에 가서 cmd창을 열고 APP을 추가한다
> django-admin startapp app_name
코드 입력시 app이름과 같은 폴더가 생성됨
이때
http://127.0.0.1:8000/basic1 에 접근하면 Page not found404 오류가 발생한다
/basic1 에 맞는 url 매핑이 되어있지 않기 때문 -> config/urls.py에서 매핑 필요
1. basic1 view.py 에 함수 추가
url 매핑 전 해당 url에서 어떤 작업을 할 것인지 코드를 작성해야한다
from django.http import HttpResponse
def hello(request):
return HttpResponse("안녕 django!")
HttpResponse - 페이지 요청에 대한 응답할때 사용하는 장고 클래스
함수 매개변수 request - 장고에 의해 자동으로 전달되는 HTTP 요청
2. config/urls.py에서 url 매핑
- basic1앱의 view 파일 import
- /basic1/hello에 접근하면 basic1 -> view.py -> hello함수를 실행하라는 의미
3. http://127.0.0.1:8000/basic1/hello/ 접속
장고 실행 흐름
- 사용자가 주소창에 링크 주소 입력 (http://127.0.0.1:8000/basic1/hello/)
- Local server에서 urls.py -> 링크 주소에 맵핑된 앱 함수 연결
- 연결된 함수 실행
HTML 실행하기
- 프로젝트 파일 하위에 templates 폴더를 만들고 app과 동일한 폴더를 templates 폴더 하위에 생성
- config/setting.py의 TEMPLATES에 templates 폴더 경로를 입력
html파일을 template라고 하며 이는 모두 templates 하위 디렉토리에서 처리하겠다는 의미이다
장고에서는 앱 하위 디렉토리 중 templates가 있으면 이를 자동으로 템플릿 디렉토리로 인식하지만, 모든 앱의 template는 모아서 관리하는것이 좋다
- HTML 파일 만들기
templates 하위 디렉터리 중 해당 앱 아래에 원하는 html 파일을 추가한다
- view.py 추가 (APP - views.py)
def name_input(request):
return render(request, 'basic1/name_input.html')
html을 열기위한 메서드 = render
이때 html 경로에 templates/ 를 붙이지 않는 이유는 이미 setting.py에서 경로를 잡아주었기 때문이다
def name(request):
input = request.POST.get("my_name")
return HttpResponse(f"내 이름은 {input}")
http://127.0.0.1:8000/basic1/name/에서 실행할 함수도 추가한다
request안의 POST는 딕셔너리 형태로 이루어져있다
- urls.py 추가 (config - urls.py)
urlpatterns = [
path('admin/', admin.site.urls),
path('basic1/hello/', basic1.views.hello),
path('basic1/name_input/', basic1.views.name_input),
path('basic1/name/', basic1.views.name),
]
'Algorithm > Web(django)' 카테고리의 다른 글
[세미 프로젝트] django 카카오지도 api 사용하기 (0) | 2022.04.17 |
---|---|
[Django] 웹페이지 만들기 - 게시글 수정, 삭제 (0) | 2022.01.12 |
[Django] 웹페이지 만들기 - 부트스트랩 사용하기 (0) | 2022.01.12 |
[Django] 웹페이지 만들기 - DB 데이터 관리하기 (0) | 2022.01.11 |