1) 요청이 오면 HTML 파일을 출력 시키기는 방법
> 애플리케이션의 views.py 파일에 html을 출력하기 위한 함수를 생성한다.
내가 만든 애플리케이션은 jweb이니까 jweb/views.py 에 작성하면 된다!
점심먹고 너무 졸려서 출력될 파일에 남길 메세지를 잠깨이새끼야! 로 설정.
def menu(request):
# menu.html 파일을 출력하는데 파일에 message 라는 이름으로 data를 전달
return render(request, 'menu.html', {'message':'잠깨이새끼야!'})
> 출력할 HTML 파일을 저장하기 위한 templates 디렉토리를 애플리케이션 디렉토리에 생성
- templates 디렉토리에 menu.html 파일을 만들고 출력 내용을 작성
서버 애플리케이션에 html파일을 만들어서 출력하는 방식을 서버 사이드 랜더링이라고 하고 최근에는 잘 사용하지 않는다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>메뉴</title>
</head>
<body>
<h3>템플릿을 이용한 출력</h3>
<h4>데이터 출력</h4>
<div>
{{message}} # 내가 설정한 메세지를 불러온다.
</div>
</body>
</html>
> 프로젝트의 urls.py 파일에 url과 views의 함수를 연결하는 코드를 추가한다.
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★ 어떤 url이 왔을때 누가 처리할지 정해주는 것이라 매우 중요하다!!!★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
from jweb import views
urlpatterns = [
path("admin/", admin.site.urls),
path("",views.index),
path("menu/",views.menu),
]
서버를 구동하고 127.0.0.1/menu를 통해 확인해보자.
![](https://blog.kakaocdn.net/dn/UULNA/btsD4VzUlCn/FmDkYg2thfyqJLGSHhDdZ1/img.png)
제발 잠 좀 깨...... 졸지마..... 정신차려........
잘 되는군요 하지만 잠이 깨지 않았다는게 함정이죠 잠이 깬척만 했습니다 쉬는시간에 바람을 맞으며 정신을 차려야겠어 너무 졸려
2) 파라미터 읽기
Parameter : 웹에서는 클라이언트가 서버에게 전송하는 데이터를 의미한다.
> 파라미터 전송 방식
[1] url 파라미터 : url에 파라미터를 포함해서 전송하는 방식으로 최근에 많이 사용
티스토리 URL은 https://ggangpae1.tistory.com/729 형식인데 여기서 729가 url파라미터 게시글 번호이다.
[2] querystring : GET 방식 요청에서 URL 뒤에 ? 를 추가하고 key=value&key=value 형태로 데이터를 전송하는 방식인데 이 방식은 파라미터가 URL에 노출되고 데이터의 길이 제한이 있어서 비밀번호, 파일 등은 전달이 불가하다.
네이버 검색의 경우 https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=go+to+bed &query= 뒤가 파라미터. go+to+bed!!
[그외] POST 나 PUT, DELETE 방식은 데이터를 header에 숨겨서 전송 [ 보 안 철 저 ! ] ex) 로그인
!! 서버에서는 어느 방식으로 오든 데이터를 읽어낼 수 있어야 한다. !!
3) URL 파라미터 읽기
> 처리방법
urls.py 파일에 요청을 만들 때 path('url/<자료형:변수이름>", 요청 처리 함수) 형식으로 만들고
views.py 파일에 요청 처리 함수를 만들 때 def 함수이름(request, 변수이름)으로 만들면 url의 변수값이 변수에 형 변환되어 대입된다.
https://ggangpae1.tistroy.com/731 과 같은 형식의 url 파라미터를 읽기 위해서는
형식으로 작성하면 된다. 상세보기를 만들 때 주로 사용한다.
이제 127.0.0.1/article/글번호 에 해당하는 숫자 형태의 URL을 처리할 때 글 번호에 해당하는 숫자를 출력해보자고~!
먼저 views.py 파일에 함수를 넣어준다~
![](https://blog.kakaocdn.net/dn/Ux9Lz/btsEbGVHMRB/2Hx9mC4YxuVr76HOwI6841/img.png)
그리고 urls.py 파일에 요청을 연결하는 코드도 추가한다.
![](https://blog.kakaocdn.net/dn/brQFLc/btsD7lLNipq/GqURyFo1UzhsrynpIHRuHK/img.png)
이제 슬슬 뭘 해야할지 감이 오겠쮸? 서버 구동하고 확인 해봅시다.
![](https://blog.kakaocdn.net/dn/OJ25a/btsD3rzuEeK/vVlKpR6wNOBtRRVxZnaXCk/img.png)
짜잔~ 잘 되죠? but 지금의 경우에는 'article/<int:no>' INT 정수를 넣어뒀기 때문에 정수가 아닌 문자열을 넣으면 아래와 같이 연결이 안되니 주의 !!
![](https://blog.kakaocdn.net/dn/bntQz5/btsEbGVHMR8/VlwWclQrVk0yRkKXhT5cQ0/img.png)
상태코드 404 뭐라고 ? 저번시간에 했다. 상태코드 404: 지정한 리소스를 찾을 수 없는 경우!!
이 방식은 대부분의 경우 하나의 데이터를 가져오고자 할 때 기본키값을 데이토로 전송하는 형식에서 주로 이용한다!
4) GET 이나 POST 방식으로 전송 된 파라미터 읽기
> 요청 처리 함수의 매개변수에 GET이나 POST 라는 딕셔너리로 데이터가 전달 된다.
https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=go+to+bed 과 같은 형식의 GET 파라미터를 읽기 위해서는
이제 querystring 형식을 한번 읽어내도록 urls.py 와 views.py 를 수정해보자
views.py는 파라미터를 GET 방식으로 전송했을 때 연결해 줄 함수를 작성한다.
![](https://blog.kakaocdn.net/dn/xHrCC/btsD8w7qpfb/bcmZ1XTxQuYZeb6Un3IfwK/img.png)
urls.py 는 search?query=검색어 를 처리하는 url과 함수를 연결!
![](https://blog.kakaocdn.net/dn/0uP8u/btsD3pn9M5H/VEjVNDYv1SMCpagKZHpKTK/img.png)
이까지 했으면 당연히 서버 구동하고 되는지 테스트 해본다.
127.0.0.1/search?query=잠은 좀 깼니 제이야 형식으로 입력 해보즈아.
![](https://blog.kakaocdn.net/dn/XR5Jn/btsD6uBZkx9/vJfyZGTdKpPBbImOgIxVG1/img.png)
아니 아직이야
짜라잔짠 잘 되는구먼
지금 views.py에 작성한 것 처럼 함수를 작성하게 된다면 qurey오류가 났을 때 페이지가 터진다
그래서 기본값을 줘서 페이지가 터지더라도 기본값이 출력되도록 해주면 좋다.
![](https://blog.kakaocdn.net/dn/4Pbbq/btsD3KexaaO/Dw2LSB4OS7gaUka4kR70hK/img.png)
이렇게 써주면 127.0.0.1/search?que1414ry4198741982479=잠은 좀 깼니 제이야 같이 주소가 잘못 입력 되어도 기본값으로 설정해둔 내용이 페이지에 출력된다.
![](https://blog.kakaocdn.net/dn/cR9tYM/btsEbaW4dW4/IwrHhQKioqOb9HGnU1U05K/img.png)
어때요? 정말 쉽죠? [아니요;;]
졸음과 싸우던 시간이 끝났슴다.. 잠 좀 깨고와서 데이터베이스 연동으로 이어가도록 할게유 안냥~~~~~~
'DX Data School' 카테고리의 다른 글
데이터베이스 연동 2 (1) | 2024.01.30 |
---|---|
데이터베이스 연동 (0) | 2024.01.30 |
Django 활용하여 Web Programming 실습 (2) | 2024.01.30 |
Python Web Programming (0) | 2024.01.30 |
Python 과 Mongo DB 연동 (1) | 2024.01.30 |