Django
장고 설치
% 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 측면에서 들어오는지 확실히 알지 못할 때 좋다.