본문 바로가기
Web hacking/개념 정리 & 심화

Django 설치 및 실습 - 2

by m_.9m 2022. 12. 1.

2022.11.17 - [Web hacking/웹 정리 & 심화] - Django 설치 및 실습 - 1

 

(2) 페이지 만들기

프로젝트 이름(testproject)으로 만들어진 폴더 내 urls.py에 아래의 내용을 추가한다.

해당 폴더 밑에 생성한 애플리케이션(ssti)의 내용을 찾을 수 있도록 한다. 또한 앱 내 url 파일에서 입력해도 경로를 찾을 수 있도록 include를 통해 포함시킨다.

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path('ssti/', include('ssti.urls')),
]

앱 경로에 url 파일을 새로 생성해 아래의 내용을 추가한다.

from django.urls import path
from .views import *

app_name = 'ssti'
urlpatterns = [
    path('', index, name='index'),
		#(경로, 처리할 view, 패턴 이름)
]

앱 내 views.py 파일에 아래의 내용을 추가해 서버를 구동해 확인해본다.

from django.http import HttpResponse

# Create your views here.
def index(request):
    response = HttpResponse()
    response.write("<h1>Welcome</h1>")
    response.write("<p>This is my first Django. </p>")
    return response

 

(3) HTML 파일 사용하기

setting 파일에 아래의 내용을 추가한다.

import os

# 템플릿 경로 
TEMPLATE_DIR = os.path.join(BASE_DIR, 'templates')

 

template={}를 찾아 TEMPLATE_DIR를 추가한다.

 

이후 최상위 프로젝트 폴더에 templates>test>index.html을 생성한다.

 

이후 해당 html 파일이 정상 구동하는걸 확인한다,

 

(4) 파라미터 주고받기

앱 URL에서 해당 구문을 추가해 name 경로를 name이라는 view로 처리하게 한다.

path('name', name, name='name')

#(경로, 처리할 view, 패턴 이름)

또한 view에 name이라는 함수형 뷰도 추가해준다.

def name(request):
    return render(request, 'test/name.html', {'name':'mjjj'})

이 다음 /templates/test 경로에 name.html를 추가한다.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Django Tutorial v2</title>
</head>
<body>
<h2>Hello {{name}}</h2>
TEST
</body>
</html>

URLconf(매핑해서 나오는 기능) 활용해 간단한 파라미터를 주고받겠다.

앱 URL에서 path('name/<str:keyword>', username, name='username'), 를 추가

views에서 아래 내용을 추가한다.

def username(request, keyword):
    return render(request, 'test/name.html', {'name':keyword})

접속 시 ssti/name은 name함수로 ssti/name/str:문자열은 username으로 각각 mjjj와 입력 str를 반환하게 된다.

ssti/name

ssti/name/str:문자열