장고 프로젝트에 필요한 플러그인 등 버전을 관리하기 위해 가상환경이 필요하다.
가상환경 없이 그냥 설치해버리면 프로젝트마다 프로그램 버전이 달라서 문제가 생길 수 있어서,
한 프로젝트마다 해당 프로젝트에 맞는 도구를 넣는 공구함이라고 생각
python -m venv djangovenv
F1
select interpreter ➜ python:Select interpreter 선택
설정했던 가상환경 폴더와 같은 이름의 항목을 선택
터미널에 + 로 새로운 터미널 실행
& : 이 시스템에서 스크립트를 실행할 수 없으므로 D:\jeongyeonju\prac\pyt
hon\djangovenv\Scripts\Activate.ps1 파일을 로드할 수 없습니다. 자세한
내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID
=135170)를 참조하십시오.
위치 줄:1 문자:3
+ & d:/jeongyeonju/prac/python/djangovenv/Scripts/Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : 보안 오류: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
명령어 다음과 같이 입력
ExecutionPolicy ⬅️ 현재상태확인
Restricted ⬅️ 모든 스크립트 막은 상태
Set-ExecutionPolicy Unrestricted
ExecutionPolicy ⬅️ 현재상태확인
Unrestricted ⬅️모든 스크립트 허용 상태
파워쉘 오류라고 해서, 보통 이렇게 하면 되는데
계속 해결이 나지 않아서 물어봤더니,
터미널을 파워쉘말고 cmd로 하면 된다고 했다.
집에 있는 노트북으로 했는데 파워쉘 오류 없이 바로 새로운 터미널 생성되기는 했다.
1.장고 설치
python -m pip install django
2.프로젝트 생성
django-admin startproject 프로젝트명
django-admin startproject firstproject
해당 폴더로 이동 후
python manage.py runserver
1.mariaDB연동을 위해 mysqlclient 설치
pip install mysqlclient
새로운 앱을 만든다.
python manage.py startapp mariadb
django에서 DB에 접근할수 있도록 설정
firstproject/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'aitrading_db',
'USER':'root',
'PASSWORD':'1234',
'HOST':'localhost',
'PORT':'3307',
}
}
위 코드로 바꿔서 설정을 한다.
django가 연동한 DB에 초기화 할 수 있도록 한다.
python manage.py inspectdb> '저장하고자하는위치'/models.py
python manage.py inspectdb> mariadb/models.py
수행하고나면, 해당 폴더에 기존DB에 있던 modelobject가 모두 자동으로 생성된다.
자동으로 생성하고,
python manage.py makemigraions
python manage.py migrate
python manage.py migrate // 적용되지 않은 migrations들을(설정값들을) 적용시키는 역할
python manage.py makemigrations // models.py에서 적용한 변경사항이나 추가된 혹은 삭제된 사항들을 감지하여 파일로 생성
mariadb/view.py
from django.shortcuts import render
from .models import Kosdak000440M
def post_view(request):
result = Kosdak000440M.objects.all()
# Kosdak000440M 테이블의 모든 객체를 불러와서 result변수에 저장
return render(request, 'index.html', {"result": result})
from django.contrib import admin
from django.urls import path
from mariadb import views
urlpatterns = [
path('admin/', admin.site.urls),
path('post/', views.post_view),
]
<body>
<h1>DB연동</h1>
<ol>
{% for result in result %}
<li>
시가: {{result.open}} 종가 : {{result.close}} 날짜 : {{result.day}}
</li>
{% endfor %}
</ol>
</body>
⛔️ 구글링했을때 result_open
이런식으로 언더바를 사용해서 데이터를 가져오라고 했는데,
데이터의 개수만큼 <li>태그
가 생겼는데,
중요한 데이터값이 계속 안들어와서
혹시나하고, result.open
으로 했더니 값이 가져와졌다.
DJango 의 inspectdb 기능때문에, django를 쓰는 건가
자동으로 가져와주는게 기존의 db를 자동으로 가져온다.
문제는 지금 갖고 있는 db 테이블의 개수가 몇만개인데..
다가져오지 못하고 있는 데 어떻게 해야할 지 모르겠다..ㅠ