第二章:長期的な基本要素(1)
01 URLとビュー
🎈 アプリケーションの作成
ㄴ安卓アプリケーションの意義≠長久アプリケーションの意義
-ハンドヘルドアプリケーション:
> terminal
(mysite) C:\projects\mysite> django-admin startapp pybo
🎈 urlマッピング
ㄴ接続アドレス(url)と画面(ビュー)
> config/urls.py
from django.contrib import admin
from django.urls import path
from pybo import views
# 호스트명, 포트 생략하고 끝에 / 삽입하는 형식 <url 정규화>
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', views.index),
]
> pybo/views.py# request: 장고에 의해 자동으로 전달되는 HTTP 요청 객체
# request: 사용자가 전달한 데이터를 확인할 때 사용
# HttpResponse: 페이지 요청에 대한 응답을 할 때 사용하는 장고 클래스
from django.http import HttpResponse
def index(request):
return HttpResponse("안녕하세요 pybo에 오신것을 환영합니다.")
02モデル
🎈 モデルの作成
ㄴSQLite:スモールプロジェクト用のファイルベースの軽量レベルデータベース
> pybo/models.py
class Question(models.Model):
subject = models.CharField(max_length=200)
content = models.TextField()
create_date = models.DateTimeField()
# 데이터 조회 시, 출력
def __str__(self):
return self.subject
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
content = models.TextField()
create_date = models.DateTimeField()
> terminal
# 앱들이 필요로하는 테이블 생성
(mysite) C:\projects\mysite> py manage.py migrate
# 테이블 작업 파일 생성
(mysite) C:\projects\mysite> py manage.py makemigrations
# makemigrations, migrate 명령은 모델의 속성이 추가되거나 변경된 경우 실행
# 단순 메서드 추가/수정 시 불필요
> config/settings.py::INSTALLED APPSの「pybo」です.apps.PyboConfigの追加Pyboアプリケーションのインストール# 장고 프로젝트에 설치된 앱들
INSTALLED_APPS = ['pybo.apps.PyboConfig',
... ]
# 사용하는 DB에 관한 정보
# BASE_DIR = C:/python_projects/mysite
# 여러 DB 활용 시, 추가 가능
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
🎈 オブジェクトの作成、保存、クエリーおよび削除
> terminal
(mysite) C:\projects\mysite>python manage.py shell
>>> from pybo.models import Question, Answer
>>> from django.utils import timezone
###### 객체 생성 및 저장
>>> q = Question(subject='pybo가 무엇인가요?', content='pybo에 대해서 알고 싶습니다.', create_date=timezone.now())
>>> q.save()
>>> q = Question(subject='장고 모델 질문입니다.', content='id는 자동으로 생성되나요?', create_date=timezone.now())
>>> q.save()
###### 객체 조회
### 객체 개수 조회
# id: 데이터 유일값(pk), 데이터 생성 시 1씩 증가
>>> q.id
2
### 데이터 전체 조회
# __str__(self)을 통해 id 값 대신 제목 출력
>>> Question.objects.all()
<QuerySet [<Question: pybo가 무엇인가요?>, <Question: 장고 모델 질문입니다.>]>
### 특정 데이터 조회
# filter :: queryset 형식으로 반환
# 조건에 맞지 않는 데이터 시도 시, 빈 쿼리셋 반환
>>> Question.objects.filter(id=1)
<QuerySet [<Question: pybo가 무엇인가요?>]>
# filter(subject_contains='..') : 특정 문자열이 포함되어 있는 데이터 조회
>>> Question.objects.filter(subject__contains='장고')
<QuerySet [<Question: 장고 모델 질문입니다.>]>
# get : 모델 객체 반환
# 조건에 맞지 않는 데이터 시도 시, 오류 메시지 발생
>>> Question.objects.get(id=1)
<Question: pybo가 무엇인가요?>
###### 특정 객체 수정
>>> q = Question.objects.get(id=2)
>>> q.subject = 'Django Model Question'
>>> q.save()
###### 특정 객체 삭제
# delete : (삭제된 모델 데이터 id, {모델명, 삭제된 모델 개수}) 반환
>>> q = Question.objects.get(id=1)
>>> q.delete()
(1, {'pybo.Question': 1})
##### 연결된 데이터
### 연결 객체 생성
>>> q = Question.objects.get(id=2)
>>> a = Answer(question=q, content='네 자동으로 생성됩니다.', create_date=timezone.now())
>>> a.save()
### 연결된 객체 조회
# A로 Q 찾기
>>> a.question
<Question: Django Model Question>
# Q로 A 찾기
>>> q.answer_set.all()
<QuerySet [<Answer: Answer object (1)>]>
03倉庫管理者
🎈 管理者の作成(admin)
ㄴユーザー名:admin
ㄴ電子メールアドレス:[email protected]
1234
> terminal
(mysite) c:\projects\mysite>python manage.py createsuperuser
사용자 이름 (leave blank to use 'pahke'): admin
이메일 주소: admin@mysite.com
Password:
Password (again):
비밀번호가 너무 짧습니다. 최소 8 문자를 포함해야 합니다.
비밀번호가 너무 일상적인 단어입니다.
비밀번호가 전부 숫자로 되어 있습니다.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
»誤った経験
▶OperationalError:no that table:~~移行の確認
▶Circular Dependencies♥対応するアプリケーション移行フォルダ内~001.pyを削除してから再移行
▶Exception[WinError 995]スレッド終了またはアプリケーション要求によるI/O操作のキャンセル
⇒ downgrade prompt toolkit to 2.x
>> pip uninstall prompt-toolkit
>> pip install prompt-toolkit==2.0.10)
Reference
この問題について(第二章:長期的な基本要素(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@ohhj1999/chap2-장고의-기본-요소1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol