밤하늘공작소

[Django 웹페이지] views.py·urls.py (1) 본문

코딩/Django

[Django 웹페이지] views.py·urls.py (1)

밤하늘공작소 2022. 5. 12. 14:50

이제 실제로 우리의 페이지를 만들어보겠습니다. 전에 나왔던 페이지는 django에서 주는 페이지이므로 실제로 우리가 만든 페이지가 아닙니다. 이제 우리가 실제로 파이썬 코드를 써서 웹사이트를 만들어보겠습니다. 

 


 

우선 파이썬 루트 디렉토리(~/django-test/test_project/)로 간 다음 vscode를 켜줍니다. 그런 다음 test_project 안에 있는 urls.py로 가보겠습니다. 그곳에 가보면 기본적으로 적혀 있는 코드들이 있습니다. (위에 빨간색들은 사용법이므로 무시하셔도 됩니다. 실제로 코드에는 아무 영향을 안 미칩니다.)

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

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

이 코드를 살펴보면 urlpatterns가 django 프로젝트의 URL를 가지고 있다는 것을 알 수 있습니다. 이 urlpatterns 안에 우리의 url들을 넣으면 되는 것입니다. 그것을 쓰기 전에 구성을 살펴보겠습니다. urlpatterns 안에 있는 path는 두 개의 파라미터(필요시 더 늘어날 수 있음)를 가집니다. 첫 번째 파라미터는 실제로 추가할 url을 가지고, 두 번째 파라미터는 실제로 갈 곳을 가리킵니다. 예를 들어서 admin/으로 표시되어 있다면 실제 URL(naver.com, daum.net 등) 뒤에 naver.com/admin처럼 사용하겠다는 것입니다. (우리의 서버를 켜고 http://127.0.0.1:8000/admin으로 가보면 admin의 로그인 페이지를 볼 수 있습니다.)

 

 

이제 우리 URL을 넣어보면, 이렇게 할 수 있습니다. 

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

urlpatterns = [
	path('admin/', admin.site.urls),
	path('test/', include('tests.urls')),
]

이렇게 코드를 쓰면 되는데 이런 코드는 실제로 써보는 것을 추천드립니다. 코드를 쓸 때 위에서 include를 import 하는 것을 잊으면 안 됩니다. 이 말은 URL 뒤에 test가 붙는 다면 tests(지난번에 만든 앱) 안에 있는 urls.py를 참조하라는 것입니다. 

 

하지만 tests 폴더 안으로 들어가 보면 urls.py가 없는 것을 볼 수 있습니다. 그러면 만들어주겠습니다. 

그리고 이 urls.py에 방금 전에 작성했던 코드에서 필요한 부분만 복사해서 넣어줍니다. 

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

urlpatterns = [
    
]

 

이제 ~/tests/ 다음에 올 url을 적어보도록 하겠습니다. 

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
	path('home/', views.index),
]

이 코드도 살펴보면 ~/test/home이라는 페이지는 views(views.py) 안에 있는 index라는 함수가 하라는 것을 하라는 말입니다. 그리고 views.py를 사용하기 위해 현재 있는 폴더(.) 안에 있는 views.py(views)를 import 해주었습니다. 

 

이제 웹사이트가 보이게 하려면 이 views.py에 index만 작성해주면 됩니다. views.py에 가서 이 코드를 작성해줍니다. 

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
	return HttpResponse("<h2>Test! My First Webpage!</h2>")

이 코드에서는 HttpResponse를 이용해서 실제 html 코드를 작성해서 리턴해주었지만, 나중에는 html 파일 전체를 리턴해줄 것입니다. 

 

 

이제 우리의 서버를 키고 확인해보겠습니다. 

명령어 창에 이 코드를 쳐서 서버를 켜줍니다. 

$ python3 manage.py runserver

그런 다음 http://127.0.0.1:8000/test/home/ 로 접속해보면 우리가 작성한 코드가 잘 나오는 것을 볼 수 있습니다. 

그러면 웹사이트가 잘 만들어져있는 것을 알 수 있습니다. 

 


 

이전 글 : [Django 프로젝트] 앱 생성 (2)

다음 글 : [Django 웹페이지] Template Rendering

반응형
Comments