Templates, DB, admin
● Templates
: HTML은 정적이고 파이썬은 동적으로써 HTML에 파이썬 코드를 직접 입력할 수 없다.
템플릿 태그는 파이썬 코드를 HTML로 변환하여 동적인 사이트를 만들 수 있게 한다.
참고 : https://tutorial.djangogirls.org/ko/django_templates/
- for문, if문, 변수, extends등의 기능을 사용할 수 있다.
참고 : https://docs.djangoproject.com/en/2.1/ref/templates/language/
- extends 사용법
* views.py에서는 index.html을 호출한다.
1. index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>index page</title>
</head>
<body>
{% block body %} < body 부분은 사용자 정의 부분으로 임의로 변경가능
{% endblock %}
</body>
</html>
● ORM(Object-Relational Mapping)
: Object에 대한 정의를 바탕으로, DB에 맵핑해주는 방식
- models.py에 다음과 같이 정의한다.
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)
- 위 코드는 아래의 코드와 동일한 코드이다.
CREATE TABLE myapp_person ( "id" serial NOT NULL PRIMARY KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL );
* id는 자동으로 생성된다. (primary key)
* 기본적으로 Django에서는 sqllite3를 사용하고 있다.
참고 : https://docs.djangoproject.com/en/2.1/topics/db/models/
- _initial.py 폴더에서 migtaion에 대한 세부내용을 확인할 수 있다.
● admin
: Django에서는 기본적으로 관리자 페이지를 제공한다.
- settings.py
INSTALLED_APPS = [
'django.contrib.admin', << 관리자
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'website',
]
- 관리자 페이지에서는 User, Group, Models를 관리할 수 있다.
* 처음 관리자 페이지를 들어오게 되면 Models를 관리하는 페이지를 찾아볼수 없다. 따로 설정해야 한다.
> 앱폴더에서 admin.py에서 아래 코드를 입력한다.
from .models import *
# Register your models here.
class PersonAdmin(admin.ModelAdmin):
pass
admin.site.register(Person, PersonAdmin)
* 위 설정을 통해서 관리자 페이지를 들어가게 되면 데이터를 구분하지 힘들다
위와 같은 문제를 해결하기 위해서
models.py에 아래 코드를 입력한다.
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
def __str__(self):
return '%s %s' % (self.first_name, self.last_name)
● shell
: manage.py shell 명령어를 통해서 shell실행
- shell 을 통해서 데이터를 추가, 삭제 ,변경 등의 작업을 수행한다.
1. 생성
from 앱명칭.models import Person (사용자 정의)
p = Person(first_name="이름" , last_name="성") << 객체생성
p.save() << DB에 저장
2. 변경
p.first_name = "변경 이름"
p.save() << DB에 저장
3. 삭제
p.delets()
p.save() << DB에 저장
4.조회(queryset)
temp = Person.objects.all() << 전체 조회
temp.filter(first_name="이름") << 조건 조회
참고 : https://docs.djangoproject.com/en/2.1/ref/models/querysets/