본문 바로가기

Python/Django

[Django] Django - (맛보기 url 연결)프로젝트 생성 및 장고앱 추가

이번에는 간단하게 Django 프로젝트를 생성 및 하위 앱 추가에 대해서 알아보겠습니다.

 

 

  • Django 설치 - 가상환경 설치는 생략합니다.
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2>pip install django
Collecting django
  Downloading Django-4.1.2-py3-none-any.whl (8.1 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.1/8.1 MB 2.5 MB/s eta 0:00:00
Collecting sqlparse>=0.2.2
  Downloading sqlparse-0.4.3-py3-none-any.whl (42 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.8/42.8 kB ? eta 0:00:00
Collecting asgiref<4,>=3.5.2
  Downloading asgiref-3.5.2-py3-none-any.whl (22 kB)
Collecting tzdata
  Downloading tzdata-2022.5-py2.py3-none-any.whl (336 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 336.7/336.7 kB 2.3 MB/s eta 0:00:00
Installing collected packages: tzdata, sqlparse, asgiref, django
Successfully installed asgiref-3.5.2 django-4.1.2 sqlparse-0.4.3 tzdata-2022.5

 

 

  • 장고 프로젝트 생성
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2>django-admin startproject my_test_site

아래 구조로 프로젝트가 생성됨. my_test_site 이름으로 2개의 폴저가 생긴다.

my_test_site		(root 폴더)
-my_test_site
	>__pycache__
	-__init__.py	(python 패키지라는걸 알려주는 기능)
	-asgi.py	(시작점 for ASGI 웹서버)
	-settings.py	(프로젝트에 필요한 설정 및 구성)
	-urls.py	(뷰를 가리킬때 작동, 목차와 비슷한 기능, 뷰와 url을 연결설정)
	-wsgi.py	(시작점 for WSGI 웹서버)
-manage.py

 

 

  • 서버 실행 테스트
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\my_test_site>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 16, 2022 - 12:51:38
Django version 4.1.2, using settings 'my_test_site.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

 

 

  • 서버를 실행한 화면은 아래와 같습니다.

 

 

  • 관리자 화면의 주소는 아래와 같습니다.

 

 

  • 서버의 기본포트를 변경하려면 명령어 마지막에 포트 번호를 추가하면 된다.
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\my_test_site>python manage.py runserver 8080

 

 

  • 하나의 프로젝트 안에서 여러개의 서비스를 위한 다른 애플리케이션이 존재할수 있는데, 이것을 "장고 앱"라고 함.

 

 

 

  • 장고 앱 생성 - 명령어는 프로젝트 폴더 아래에서 실행해야합니다(manage.py 파일이 있는 폴더에서 실행해야 함).
  • python manage.py startapp app_name
(django) \DJANGO_COURSE_V2\my_test_site>python manage.py startapp my_app

 

 

 

 

  • 장고 앱 생성 후 필요한 설정 - views.py 파일을 프로젝트 레벨의 URL 에 직접 연결하는 작업

my_app 하위의 views.py 파일이 자동 생성되는데, 이 파일은 웹사이트의 특정 페이지와 같은 개념이다.

 

간단한 프로젝트인 경우 views.py 파일을 프로젝트의 urls.py 에 직접 연결

 

 

복잡한 프로젝트인 경우 views.py 파일을 장고앱의 urls.py에 연결후, 프로젝트의 urls.py 에 간접 연결

 

 

URL view 연결방법

 

1. 장고앱 내부의 views.py 수정(\my_app\views.py)

 

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

# Create your views here.
# 함수기반의 view
def index(request):
    return HttpResponse('HELLO THIS A VIEW INSODE MY_APP')

 

 

2. 장고앱 내부에 urls.py 생성

 

# 간접호출하는 경우
from django.urls import URLPattern, path
from . import views # from views import index 로 처리가능하지만 일반적으로 이렇게 처리함

urlpatterns = [
    path('', views.index, name='index') #/my_app --> PROJECT urls.py
]

 

 

3. 프로젝트의 urls.py 수정 - 직접/간접 호출하는 경우, 모두 구현, 현재는 간접호출로 설정됨.

 

"""my_test_site URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.1/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

# 직접호출하는 경우
from my_app import views

urlpatterns = [
    # 직접호출하는 경우
    # path('my_app/', views.index, ),

    # 간접호출하는 경우, Including another URLconf
    path('my_app/', include('my_app.urls')),
    path('admin/', admin.site.urls),
]

 

 

  • 실행결과 화면

 

 

 

 

 

 

 

'Python > Django' 카테고리의 다른 글

[Django] Django - (맛보기)동적인 View  (0) 2022.10.19
[Django] Django - (맛보기)Function 기반 View  (0) 2022.10.18
[Django] Bootstrap 기초  (0) 2022.10.06
[Django] CSS 기초  (0) 2022.10.05
[Django] HTML 기초  (0) 2022.10.04