Django에 의한 게시판 작성(Django Girls)
개요
여기에서는 Django Girls 튜토리얼의 내용을 요약하고,
파이썬의 객체 지향을 기반으로 코드를 작성하는 방법을 요약합니다.
실행 환경
여기서는 python, Django 등의 설치 및 실행 환경 구축에 관한 내용은 생략한다.
MVT 모델
먼저 이번 애플리케이션에서도 사용되고 있는 MVT 모델에 대해 설명한다.
이름
설명
M (Model)
데이터 관리
V (View)
통화 제어
T (Template)
사용자 인터페이스
참고 자료
1. 애플리케이션 생성
$ django-admin startproject mysite .
이 명령은 장고 프로젝트를 새로 만듭니다.
파일 구성은 ↓와 같은 형태
$ django-admin startproject mysite .
manage.py
: 사이트 관리에 도움이되는 스크립트 settings.py
: 웹 사이트 설정 포함TIME_ZONE 및 LANGUAGE_CODE를 일본으로 설정
더 새로운 애플리케이션 만들기
$ python manage.py startapp blog
이렇게 하면 새 blog 디렉토리가 만들어집니다.
응용 프로그램을 만든 후에는 setting.py에 사용할 것을 명시해야합니다.
setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# この文を追加する
'blog.apps.BlogConfig',
]
이렇게 하면 새로 추가된 애플리케이션을 적응시킬 수 있습니다.
2. 모델 만들기
blog/models.py에서 모델 정의
<코드 전체>
models.py
from django.conf import settings
from django.db import models
from django.utils import timezone
class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
여기서 하나하나 설명해 나간다
class Post(models.Model):
Post 클래스의 인수에 models.Model을 취함으로써,이 클래스를 데이터베이스에 저장하기를 원합니다.
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
여기서는 각 속성을 정의합니다.
모델에 대한 정의는 장고 문서을 참조하십시오.
def publish(self):
블로그를 게시하는 방법지금까지 할 수 있다면 모델 변경 사항을 알려야합니다.
$ python manage.py makemigrations blog
이 명령을 실행하면 Post 모델이 데이터베이스에 반영됩니다.
3. 로그인 페이지 만들기
adimn.py
from django.contrib import admin
from .models import Post
admin.site.register(Post)
admin.site.register(Post)를 실행하여 모델 등록
이것으로/admin에 액세스하면 로그인 페이지가 생겼습니다!
이것으로 할 수 있습니다.
4. URL 기능 설정
blog/urls.py의 초기 상태
urls.py
"""mysite URL Configuration
[...]
"""
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
]
이렇게하면/admin에 액세스 할 때 표시되는 view를 설정합니다.
path('', include('blog.urls')),
이번에는이 문장을 urlpatterns에 추가합니다.이렇게하면 '/'에 액세스 할 때 blog.urls로 리디렉션됩니다.
그런 다음 blog/urls.py라는 파일을 만듭니다 (여기로 리디렉션됨).
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
urls.py는이 거리.
path('', views.post_list, name='post_list')
이 문장은 '/'에 액세스했을 때 post_list라는 view를 실행한다는 의미name='post_list'
는 뷰를 식별하는 데 사용되는 URL의 이름입니다.view 설정
view.py
from django.shortcuts import render
def post_list(request):
return render(request, 'blog/post_list.html', {})
그리고, blog/template/에 template가 되는 HTML 파일을 작성하면 페이지의 작성에 성공한다
5. 데이터를 동적으로 표시
views.py
from django.shortcuts import render
from django.utils import timezone
from .models import Post
def post_list(request):
posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
return render(request, 'blog/post_list.html', {'posts': posts})
from .models import Post
에서 모델의 Post 가져 오기 Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
에 저장된 데이터를 시계열 오름차순으로 게시물에 전달 {'posts': posts}
마지막으로 HTML에 게시물 정보 전달 Reference
이 문제에 관하여(Django에 의한 게시판 작성(Django Girls)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/taisei-13046/items/d1667cb8b0e950f2034f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)