본문 바로가기
Web/django

(Django) first project 3 - urls

by 스퀴시 2020. 8. 12.
728x90
SMALL
url 이란? 

-> 간단하게 WEb page의 주소이며, 각 page는 고유한 url를 가진다. 

 

Django URLs

장고의 애플리케이션은 입력받은 URL을 통해 어떤 page를 보여줘야하는지 알고 있다.
이때, Django는 URLconf (URL configuration) 를 사용한다.

URLconf란?
- 장고에서 URL과 일치하는 view를 찾기위한 패턴들의 집합

 

  • mysite/urls.py

URLconf를 사용하기위해서 urls.py 파일을 이용한다.

 


#urls.py

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

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

 

- """~"""  이 부분은 Docstring으로서 file의 기능을 설명하는 것이다.

- 위의 코드를 보면 이전 post에서 다루었던 admin page에 대한 url이 정의되어 있다. 

 -> 장고는 위의 urlpattern 정의를 통해 admin/로 시작하는 모든 URL를 view와 대조해 찾아낸다. 

 -> 많은 URL이 admin url에 포함될 수 있어서 정규표현식을 사용한다.

 

Homepage url 지정

'http://localhost:8000/'  url를 blog home으로 지정하고 post 목록 (index) 를 보여줄 것이다.

또한 mysite/urls.py file을 깨끗하게 유지한 채로 , blog application 에서 mysite/urls.py 파일로 url들을 가져올 것이다.  

 

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path ,include #include import 주의!

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')), #blog url를 include하여 path 지정
]

 위의 코드를 보면 urlpatterns에 path('', include('blog.urls')) 를 추가해줌으로써 blog의 url들을 path ''에 추가 시켰다. 여기서 ''은 기본 지정 주소인 http://localhost:8000/이다. (root url

따라서 http://localhost:8000/으로 들어오는 접속 요청은 blog.urls로 전송해 추가 명령을 찾을 것이다.

하지만 아직 blog.urls가 존재하지 않으니 만들어 줄 것이다.

 

from django.urls import path, include 추가 하는 것 주의!

 

Blog.urls

from django.urls import path  #path import
from . import views #blog application에서 사용할 모든 views import

urlpatterns = [
	path('', views.post_index, name='post_index'), #home page에 post index page(view) path 지정
]

 위의 코드를 지정함으로써, http://localhost:8000/은 post_index라는 view로 향하게 된다. 

path의 name은 URL에 이름을 붙인 것으로서 View를 식별한다.

-> 각 page의 특징을 나타내는 기능이자 잘 구분하는 기능이다. 

-> 나중에 실제 서비스를 만든다면 유용하다.

 

아래처럼 이해하면 된다.

 

http://localhost:8000/ -> mysite의 path '' -> blog/urls '' -> post_index 

 

하지만 아직 web page를 구성하기에 부족하다. 다음으로 logic을 구성하는 view를 그릴 차례다.

console 화면

실제로 server를 켜놓은 console에서 blog.views에 post_index 속성이 없다고 울고 있다.

 

View만들기는 다음 posting!!

LIST

'Web > django' 카테고리의 다른 글

(Django) first project5 - Template  (0) 2020.08.12
(Django) first project 4 - View  (0) 2020.08.12
(Django)first project3 - Admin  (0) 2020.08.12
Django MySQL 연동  (0) 2020.08.11
(Django) first project 2 - Model  (0) 2020.08.11