이끼의 생각

Django Web (10) [실습] 블로그 만들기 - urls 본문

파이썬 장고 웹 프레임워크

Django Web (10) [실습] 블로그 만들기 - urls

IKKIson 2019. 5. 20. 22:35

우리가 함께 실습하고 있는 블로그에 URL 을 세팅해보겠습니다.


블로그 답게 접속 시 글목록을 보여주게 만들어 봅시다. 접속하는 주소는 로컬 호스트로 정해줍니다.

(http://127.0.0.1:8000 or http://localhost:8000) 


또한 mysite/urls.py파일을 깨끗한 상태로 유지하기 위해, blog 애플리케이션에서 메인 mysite/urls.py파일로 url들을 가져올 거에요.



웹서버 URL 세팅하기


우선 프로젝트 폴더의 urls.py에서 로컬호스트로 접속 요청 시 곧바로 blog에서 처리할 수 있게 지정해줍니다.


먼저 blog.urls를 가져오는 행을 추가해 봅시다. blog.urls를 가져오려면, include 함수가 필요합니다. from django.urls 행을 찾아 import 뒤에 include 함수를 추가하세요.

- 경로 : 프로젝트명/하위프로젝트명/urls.py

- 게시글 기준 위치 : IKKIsonDjango/IKKIsonDjango/urls.py


from django.contrib import admin

from django.urls import path, include


urlpatterns = [

    path('admin/', admin.site.urls),

    #path('', include('elections.urls')),

    path('', include('blog.urls')),

]


이제 모든  로컬호스트 접속 요청을 blog.urls 에 전송하여 추가 명령을 찾게 될 겁니다.


다음으로 blog.urls 를 작업해볼까요?




blog.urls 세팅하기


여기서 urls가 없어서 당황하신 분들이 있을 겁니다. blog 앱 폴더에 urls.py 파일을 먼저 생성하세요. 


blog

├── migrations

 |           └── __init__.py

├── __init__.py

├── admin.py

├── models.py

├── tests.py

├── urls.py     <- 추가!!

└── views.py


그다음 경로를 지정할 수 있게 필요한 모듈을 import 하겠습니다. 아래의 두 줄을 urls.py에 추가해주세요.

- 경로 : 프로젝트명/blog/urls.py

- 게시글 기준 위치 : IKKIsonDjango/blog/urls.py


from django.urls import path

from . import views



여기서 장고 함수인 path와 blog 애플리케이션에서 사용할 모든 views를 가져왔어요. (물론 아직 뷰를 만들기 전이지만 일 분 내로 만들거에요!)


그 다음, 첫 번째 URL 패턴을 추가하세요.


urlpatterns = [

    path('', views.post_list, name='post_list'),

]



이제 post_list라는 view가 루트 URL에 할당되었습니다. 이 URL 패턴은 빈 문자열에 매칭이 되며, 장고 URL 확인자(resolver)는 전체 URL 경로에서 접두어(prefix)에 포함되는 도메인 이름(i.e. http://127.0.0.1:8000/)을 무시하고 받아들입니다. 이 패턴은 장고에게 누군가 웹사이트에 'http://127.0.0.1:8000/' 주소로 들어왔을 때 views.post_list를 보여주라고 말해줍니다.


마지막 부분인 name='post_list'는 URL에 이름을 붙인 것으로 뷰를 식별합니다. 뷰의 이름과 같을 수도 완전히 다를 수도 있습니다. 이름을 붙인 URL은 프로젝트의 후반에 사용할 거예요. 그러니 앱의 각 URL마다 이름 짓는 것은 중요합니다. URL에 고유한 이름을 붙여, 외우고 부르기 쉽게 만들어야 해요.


이제 웹서버를 실행시켜 http://127.0.0.1:8000/ 에 접속해보겠습니다.



http://127.0.0.1:8000/ 접속했는데 '웹 페이지를 사용할 수 없음(web page not available)'이라는 메시지가 표시되었나요?. 이는 서버(runserver라고 입력하는 것을 기억 하는가?)가 실행되지 않았기 때문이에요. 에러가 발생한 이유를 찾으려면 서버 콘솔 창을 보세요. 


아마 여러분들의 대부분은 pycharm에서 에러를 확인할 수 있습니다.




에러는 해결할 방법을 알려준답니다. : no attribute 'post_list' 라는 메시지가 보일거에요. 이 메시지는 장고가 찾고 사용하고자 하는 뷰가 아직 없다는 거에요. 이 단계에서 /admin/도 접속되지 않을 거에요. 앞으로 고쳐볼 테니 걱정하지 마세요.


일단 urls 세팅이 잘되었나 확인을 해야되는 views.py 파일에 임시로 hello world and blog 라고 출력하는 응답함수를 만들어 놓겠습니다.

- 경로 : 프로젝트명/blog/views.py

- 게시글 기준 위치 : IKKIsonDjango/blog/views.py


from django.shortcuts import render

from django.http import HttpResponse


# Create your views here.

def post_list(request):

    return HttpResponse("Hello World! and Blog")





이제 서버를 다시확인해봅시다.




url이 잘 세팅되었습니다.


장고의 url에 대해 자세히 알고싶으시면 장고 공식문서를 읽어보세요^^

바로가기 => 장고 공식 문서 URL


다음은 view를 만들어보겠습니다. view를 만들면서 html를 간단하게 알아볼텐데 Django ORM, CSS 등 View, UI와 관련된 많은량의 작업이 이어질 겁니다.






**출처 및 참고**

[블로그] 초보몽키님의 개발공부로그

[Wikidocs] 핀코인님의 Django 자습

[프로그래머스] 정두식님의 장고를활용한 웹사이트만들기 동영상강의

[오픈소스튜로리얼] Quasar Beyond님의 Django : Python WebFrameWork 동영상강의

[장고걸스공식] 이수진님 외. 장고걸스 튜토리얼 한국어번역

[장고걸스공식] 이수진님 외. 장고걸스 튜토리얼 심화 한국어번역

장고 공식 Document Tutorial

Comments