Django는 관리자페이지를 제공한다.
localhost:8000/admin
유저 생성
-python manage.py createsuperuser
추가
추가하고싶은 프로젝트의 admin.py에다가
from .models import Post # Post의 models 정보를 가져와서
admin.site.register(Post) # admin 사이트에 등록을 해준다.

Django URLs
Django는 URLconf (URL configuration) 를 사용한다. URLconf는 장고에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합입니다.
mysite/urls.py
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
정규표현식(Regex)
- ^ : 문자열이 시작할 때
- $ : 문자열이 끝날 때
- \d : 숫자
- o : 바로 앞에 나오는 항목이 계속 나올 때
- () : 패턴의 부분을 저장할 때
View
뷰(View)는 애플리케이션의 "로직"을 넣는 곳이다. 뷰는 이전 장에서 만들었던 모델에서 필요한 정보를 받아와서 템플릿에 전달하는 역할을 한다.
#blog/views.py
def post_list(request):
return render(request, 'blog/post_list.html')
# post_list라는 함수를 만들어 요청을 넘겨받아 render 메서드를 호출합니다.
# 이 함수는 호출하여 받은(return) blog/post_list.html 템플릿을 보여준다.
템플릿
템플릿이란 서로 다른 정보를 일정한 형태로 표시하기 위해 재사용 가능한 파일을 말한다.
예를 들면 편지에도 같은 템플릿을 사용할 수 있다. 편지의 내용이나 수신인 주소는 달라져도 같은 디자인, 레이아웃을 사용할 때도 있으니 말이다.
Django 템플릿 양식은 HTML을 사용한다.
1. blog/templates/blog/post_list.html 생성

2.
<html>
<head>
<title>Django</title>
</head>
<body>
<h1>Hello Django Girls</h1>
<p>Hi there!
<p>It works!
</body>
</html>
ORM
언어를 그대로 활용해서 SQL 쿼리를 생성하는 라이브러리를 ORM이라고 한다.
Django Model(Django 에서의 ORM)
쿼리셋
Django ORM 을 이용하여 데이터베이스로부터 데이터를 읽거 필터를 걸거나 정렬할 수 있습니다.
1. python manage.py shell # manage.py로 쉘을 열면 Django 환경을 기본셋업을 해주고 쉘을 띄워준다.
2. 모든 객체 조회하기
from blog.models import Post
Post # 확인
Post.objects.all() # 모든 객체 조회
for post in Post.objects.all():
print(post)
객체 생성하기
데이터베이스에 새 글 객체를 저장하는 방법
#하지만 여기에 뭔가 빼 먹은 것이 있다. me 를 배 먹었다. 작성자로서 User 모델의 인스턴스를 가져와 전다랳줘야 한다.
from django.contrib.auth.models import User
User.objects.all() # 모든 유저목록 확인 2044smile
me = User.objects.first() # 2044smile 을 me에 저장
me = User.objects.get(username='2044smile') # get을 이용하여 username을 지정해서 저장도 가능하다.
Post.objects.create(author=me, title='Sample title', text='Test')
me.username # '2044smile'
me.password # 암호화 된 값들이 출력
Post.objects.create(author=me, title='Sample title', text='Text')
Post.objects.all() # 한 개가 더 추가된 걸 확인할 수 있다.
기본 python shell 보다 강력하고 더 유용한 ipython
(myvenv) C:\dangogirls > pip install ipython # 설치
python manage.py shell # 실행
필터링
쿼리셋의 중요한 기능은 데이터를 필터링하는 것이다.
Post.objects.filter(author=me) # author가 me 인 것을 찾아라
Post.objects.filter(title__contains='title') # title을 가지고 있느 목록을 출력
# contains는 대소문자를 구분한다. 'title' 과 'Title' 을 다른 것으로 인식한다는 것이다.
# 이 때는 icontains 앞에 i(이그노어)를 붙여 무시하게 할 수 있다.
#####################################
from django.utils import timezone
timezone.now() # 현재시각 확인
Post.objects.filter(published_date__lte=timezone.now()) # 현재시간보다 발행일시가 작거나 같은 것
# 여기서 결과가 안나오는 이유는 발행(publish) 하지 않았기 때문에 나오지 않는다.
# lte는 less than equal로 <= 를 의미한다.
# gte는 greater >= 를 의미한다.
게시
post = Post.objects.get(title='Sample title')
post.publish() # post를 발행
post.published_date # 발행한 날짜 확인
Post.objects.filter(published_date__lte=timezone.now()) # 발행날짜가 현재시간보다 적으면 출력
정렬하기
Post.objects.order_by('created_date') # 필드 대한 오름차순
Post.objects.order_by('-created_date') # 필드를 기준으로 내림차순(-)
# 쿼리셋 연결하기
Post.objects.filter(published_date__lte=timezone.now()).order_by('bulished_date')
# 조회할 조건들을 계속 추가하는 것이다. ex) where
User.objects.all() = SELECT * FROM User;
User.bojects.create(author=me, tittle=' ', text=' ') = CREATE TABLE me ( ~ )
Post.objects.order_by('created_date') # 필드 대한 오름차순 = order by created_date ASC;
Post.objects.order_by('-created_date') # 필드를 기준으로 내림차순(-) = order by created_date DESC;
'Web > Django' 카테고리의 다른 글
| Django / 프로그램 애플리케이션 확장 (0) | 2019.06.30 |
|---|---|
| Django / 템플릿 동적 데이터와 쿼리셋 (0) | 2019.06.30 |
| Django / 설정,실행하기,모델(데이터베이스 테이블) 생성 (0) | 2019.06.28 |
| Django / Jupyter Notebook 설치하기 (0) | 2019.06.26 |
| Django 가상환경 / FileNotFoundError: Error2 해결 (0) | 2019.06.26 |
댓글