HelloJinny 2023. 5. 2. 19:08

장고 설치

% pip3 install django

 

새 프로젝트 시작

% django-admin startproject [이름 my_site]

 

애플리케이션 생성

% cd [프로젝트 이름 my_site]

% python manage.py startapp [애플리케이션 이름 my_app]

 

실행

% python3 manage.py runserver

 


1. my_app/templates/my_app/index.html 파일 생성

 

2. my_app/views.py 파일 작성

 

3. my_app/urls.py 파일 생성 및 작성

 

4. my_site/urls.py 경로 설정

 

5. my_site/settings.py

애플리케이션과 템플릿이 모두 프로젝트 레벨의 settings.py 파일 내에 연결되어 있는지 확인

- 애플리케이션을 설치된 애플리케이션(INSTALLED_APPS)에 등록

 


2. my_app/views.py

from django.shortcuts import render

# Create your views here.
def example_view(request):
    # python manage.py migrate
    # check apps.py file inside my_app
    # confirm Config class is there
    # add Config to INSTALLED_APPS ('my_app.apps.MyAppConfig')
    # python manage.py makemigrations my_app (result is No changes detected in app 'my_app')
    # python manage.py migrate (no migrations to apply)
    # create my_app/templates/my_app/home.html
    return render(request,'my_app/home.html')

def filter_view(request):

    # MUST BE A DICTIONARY
    my_var = {
        'first_name':'Rosalind',
        'last_name':'Franklin',
        'some_list':[1,2,3],
        'some_dict':{'inside_key':'inside_value'}
    }

    return render(request,'my_app/filters.html',context=my_var)

my_app/urls.py

from django.urls import path
from . import views

# domain.com/first_app/simple_view
urlpatterns = [
    # path('<str:topic>/', views.news_view, name='topic-page'),
    # # path('<int:num1>/<int:num2>', views.add_view),
    # path('<int:num_page>', views.num_page_view)
    path('', views.first_view),
    path('/variable/', views.varialbe_view)
]

1. [my_site] - [urls.py]

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

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

 

3. [my_app] - [urls.py]

from django.urls import path
from . import views

# Register the app namespace
app_name = 'my_app'

urlpatterns = [
    path('', views.example_view,name='home'),
    path('filters/',views.filter_view)
]

2. [my-site] - [settings.py] 에 정의하기

INSTALLED_APPS = [
    'my_app.apps.MyAppConfig',
    'django.contrib.admin',
    (이하 생략)

, 붙이는 거 잊지 말기!

 

 

태그

 

1. 애플리케이션 my_app의 urls.app 파일에 app namespace 등록

from django.urls import path
from . import views

# Register the app namespace
app_name = 'my_app'

urlpatterns = [
    path('', views.example_view,name='home'),
    path('filters/',views.filter_view)
]

2. urlpatterns 경로에 view에 연결된 url 이름 설정

<h1><a href="{% url 'my_app:home' %}">HOME</a></h1>

 

------------------------------

마이그레이션 설치

% python manage.py migrate

 

[setting.py] setting 파일로 이동해서 INSTALLED_APPS 부분에 내가 설치한 앱이라고 알리기

 

모델과 데이터베이스에 변경 사항이 있을 때 더 잣한 정보를 얻게 된다.

% python manage.py makemigrations first_app

 

실제로 모델과 데이터베이스에서 뭔가를 변경하고, 이러한 변경사항을 post 하려 한다면

마이그레이션 설치

% python manage.py migrate

 

[setting.py] TEMPLATES 부분에서 'APP_DIRS': True, 인지 확인

 

------------------------------------------

 

---------------------------

필터

Python 객체에 대해 또다른 수정을 수행하기 전에

모든 단일 작업에 대해 수행하고 싶을 때

Python에서 하는 게 좋다.

 

템플릿 쪽에서 하는 것이 좋은 점은

마지막 순간까지 확인할 수 있다.

어떤 데이터와 어떤 컨텍스트와 어떤 변수가 Python 측면에서 들어오는지 확실히 알지 못할 때 좋다.