Python 🐍/Django

[Django] 페이지 이동을 위한 URL 분리하기

SeongJo 2022. 10. 7. 20:00
반응형

안녕하세요 성조입니다.

html의 경우 a태그를 활용해서 페이지 이동을 진행했습니다.

Django의 경우 urls와 views를 활용하여 페이지를 이동하는 방법을 채택하고 있습니다.

이번 포스팅에서 urls와 views를 어떻게 작성해야 페이지를 이동할 수 있는지 예시로 메인 페이지, 로그인, 회원가입 페이지를 전환하는 단계까지 다뤄보려고 합니다.

 

직전 포스팅

2022.10.06 - [Python 🐍/Django] - [Django] 관리자 계정 생성하기(admin)

 

이 포스팅은 다음의 포스팅과 이어지는 포스팅입니다.

2022.10.05 - [Python 🐍/Django] - [Django] 장고(Django) 홈 페이지 만들기(home view)


urls 파일 설정하기

이번에는 2개 이상의 app에서 페이지를 전환하는 경우를 다루려 한다.

urls과 views 동작에 대해서 조금 더 깊게 다루고 싶지만 다음에 다루고 이번 포스팅에서는 간략하게 얘기하면 다음의 프로세스를 갖는다.

client(화면에서 요청)-> urls-> views를 통하여 화면에 출력한다.

본인 프로젝트 내부에 app은 home, users 앱(App) 2개가 존재한다.

각각 urls.py를 추가한다.

 

home app에 존재하는 urls.py의 소스 코드이다.

from django.urls import path
from . import views

urlpatterns = [
     path('', views.home, name="home")

]

 

users app에 존재하는 urls.py의 소스코드이다.

from django.urls import path
from . import views

urlpatterns = [
  path('login', views.login, name="login"),
  path('signup', views.signup, name="signup"),
]

 

home app에 존재하는 views.py의 소스 코드이다.

from django.shortcuts import render

def home(request):
  return render(request, 'home.html', {})

 

users app에 존재하는 views.py의 소스코드이다.

from django.shortcuts import render

def login(request):
  return render(request, 'login.html', {})

def signup(request):
  return render(request, 'signup.html', {})

 

 

 

 

 

최상단 위치(root) 폴더 수정하기

urls.py에 다음과 같이 소스 코드를 추가한다.

 

최상단 urls.py 수정하기

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

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

 

settings.py 수정하기

2개 이상의 앱을 활용하는 본인 프로젝트에서는 INSTALLED_APPS에 users 앱을 추가할 필요가 있었다.

APPS에 값을 추가할 때 반드시 '',를 작성할 것 명심하자. ,하나 안써도 에러가 발생한다.

 

 

 

 

 

html 파일 값에서 경로 지정하기

html에 경로를 지정해야 한다.

본인은 home app을 처음 화면으로 둘 예정이며, home.html 페이지에서 다른 페이지로 전환될 수 있도록 지정할 것이다.

a 태그를 활용하여 페이지를 전환한다.

<a href =" {% url '주소' %}">로 일반화할 수 있다.

<a href =" {% url '주소' %}">

 

home app에 존재하는 home.html이다.

<!DOCTYPE html>
<html lang="ko">
<title>동심원</title>
<h2>안녕 장고</h2>

<a href="/"><p>Home</p></a>

<a href="{% url 'login' %}"><p>로그인</p></a>
<a href="{% url 'signup' %}"><p>회원가입</p></a>

 

users app에 존재하는 login.html이다.

<!DOCTYPE html>
<html lang="ko">
<title>동심원</title>


<a href="{% url 'home' %}"><p>Home</p></a>

<a href="/"><p>로그인</p></a>
<a href="{% url 'signup' %}"><p>회원가입</p></a>

 

users app에 존재하는 signup.html이다.

<!DOCTYPE html>
<html lang="ko">
<title>동심원</title>

<a href="{% url 'home' %}"><p>Home</p></a>

<a href="{% url 'login' %}"><p>로그인</p></a>
<a href="/"><p>회원가입</p></a>

 

 

 

 

 

로컬 서버에서 구동되는 화면

로그인을 클릭하면 다음과 같이 페이지를 전환할 수 있다.

정상적으로 users app의 login.html 파일로 이동한 것을 확인할 수 있다. 다시 home 버튼을 눌러서 메인 페이지로 이동해 보겠다.

정상적으로 페이지가 이동하는 것을 확인할 수 있었다.

 

 


궁금하신 부분이 있다면 언제든 댓글 부탁드립니다!

다음 포스팅 때 뵙겠습니다! 감사합니다.

반응형