[PYTHON]Django장고

신동혁·2022년 8월 12일
0

PYTHON

목록 보기
2/8

1.Django란?

Django는 장고라고 불리고 파이썬을 이용한 웹 개발을 도와주는 프레임워크다.

2.웹 개발 순서

  1. Django 설치
    pip install django (혹은 아나콘다 사용 시 conda install django)

  2. 프로젝트 만들기
    django-admin startproject 프로젝트명
    명령어를 실행한 현재 경로에 명령어에 적힌 프로젝트명 폴더가 하나 생성됨을 확인할 수 있다. 해당 폴더로 이동 후 작업을 진행한다.

  3. 어플리케이션 만들기
    python manage.py startapp 어플리케이션명

  4. template 만들기
    경로는 어플리케이션명/templates/어플리케이션명 폴더를 구성하고 이 하위 폴더에 html파일을 저장한다.

  5. views-template 연결해주기

    • 어플리케이션명/views.py 에 template상 html페이지와 연결해주는 함수를 만든다.

      from django.shortcuts import render
      from django.http import HttpResponse
      
      def 함수명(request):
          return render(request, '어플리케이션명/연결할html파일명.html')
    • 어플리케이션명/urls.py를 만들고 해당 파일에 views.py를 import하고 urlpatterns에 path를 추가해준다.

      from django.urls import path
      from . import views
      
      urlpatterns = [
          path('', views.views연결할함수명, name='views연결할함수명'), 
      ]
    • 프로젝트명/urls.py 에 어플리케이션명/urls.py를 추가해준다.

      from django.contrib import admin
      from django.urls import include, path
      
      urlpatterns = [
          path('url에주소에넣어줄값/', include('어플리케이션명.urls')), # url주소 : "http://127.0.0.1:8000/url에주소에넣어줄값"으로 연결됨을 의미한다.
          path('admin/', admin.site.urls),  # 기본적으로 있음
      ] 
  6. 로컬서버 실행하기
    python manage.py runserver

  7. 모델 만들기

    • 어플리케이션/models.py 에 모델 클래스를 생성한다.
    • 클래스 구성 예시
      class 클래스명(models.Model):
          속성값 = models.속성타입(속성크기)
    • 어플리케이션명/apps.py 에 있는 Config클래스명 알아내기
    • 프로젝트명/setting.py 에 INSTALLED_APPS 에 해당 Config클래스명 추가해준다.
      INSTALLED_APPS = [
          '어플리케이션명.apps.Config클래스명',
              ...
      ]
    • 마이그레이션1 : python manage.py makemigrations polls
    • 마이그레이션2 : python manage.py migrate

3.템플릿 문법

  • 변수
{{ 변수명 }}

다음과 같은 방식으로 변수를 표현할 수 있다. 변수 속성에 대한 접근은 도트(.)를 이용한다.
ex)

a=[1,2,3,4]
# 이때 a의 0번째 인덱스인 값 1에 접근하고 싶다면?
{{ a.0 }}
# {{ a[0] }}이 아니다!!!
  • 필터
{{ 변수명|필터함수 }}
  • 필터함수

    • lower : 변수값을 모두 소문자로 변경
    • safe : XSS 공격 방지를 위한 기능
    • join:"v" : 변수로 받은 리스트를 v로 조인
      ex) {{ ["1","2","3"]|join:"a" }} ==> "1a2a3a"
    • length : 변수의 길이를 반환
    • striptags : 변수의 html태그 제거
      . . .
  • 탬플릿 태그

{% 로직 %}

탬플릿 내에서 로직을 사용할 때 사용하는 문법이다.
ex)

a=[1,2,3,99]
{% for i in a %}
	{{ i }}
{% endfor %}
# 출력화면
# 1
# 2
# 3
# 99

오류

  • TemplateDoesNotExist
    < 해결방법 >
    1. 해당 패키지의 settings.py파일 INSTALLED_APPS에 해당 어플리케이션이 제대로 넣어졌는지 확인
      # 패키지명/settings.py 파일
      INSTALLED_APPS = [
        "내 어플리케이션명", # 내가 추가한 어플리케이션명을 작성해주자!!!
        'django.contrib.admin', # 기본설정
        'django.contrib.auth', # 기본설정
        'django.contrib.contenttypes', # 기본설정
        'django.contrib.sessions', # 기본설정
        'django.contrib.messages', # 기본설정
        'django.contrib.staticfiles', # 기본설정
      ]
    2. templates/어플리케이션명 폴더 하위에 있는지 확인. 가끔 templates폴더만 만든다거나 templates/어플리케이션명폴더를 만들어 놓고 html파일은 templates 하위에 놓는 경우가 종종 있다. 해당 경로를 정확히 클릭했을 때 html파일이 확인되는지 확인해본다.
profile
개발취준생

0개의 댓글