: window 기반
가상 환경을 생성하여 장고 설치
→ 파이썬 버전 혹은 다른 라이브러리들의 버전이 일치하지 않는 문제가 발생했을 때 다른 부분에 영향을 주지 않고 독립된 그 가상환경만 지우면 됨
C:\Users\DS 14>mkdir venvs
C:\Users\DS 14>cd venvs
C:\Users\DS 14\venvs>python -m venv mysite

리눅스에서도 activate.bat 을 이용해 실행 가능
C:\Users\DS 14\venvs>cd mysite/Scripts
C:\Users\DS 14\venvs\mysite\Scripts>activate
C:\Users\DS 14\venvs\mysite\Scripts>deactivate
activate : 활성화 : activate 파일이 있는 위치에서만 실행 가능deactivate : 비활성화 : 위치 상관없이 실행 가능(mysite) C:\Users\DS 14\venvs\mysite\Scripts>pip install django
...Successfully installed asgiref-3.9.2 django-5.2.6 sqlparse-0.5.3 tzdata-2025.2
홈 디렉토리로 이동
장고 프로젝트를 생성할 디렉토리 생성 (venvs와 동일 위치)
(mysite) C:\Users\DS 14\venvs\mysite\Scripts>cd ..
(mysite) C:\Users\DS 14\venvs\mysite>cd ../..
(mysite) C:\Users\DS 14>mkdir projects
(mysite) C:\Users\DS 14>cd projects
(mysite) C:\Users\DS 14\projects>mkdir mysite
현재 위치에 장고 프로젝트 구성
django-admin startproject config .
(mysite) C:\Users\DS 14\projects\mysite>django-admin startproject config .
projects
|- mysite
|- config
|- manage.py
...
config : 프로젝트의 전체 설정을 관장함settings.py
...
from pathlib import Path
# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
# BASE_DIR 확인
print(BASE_DIR)
...
/* 실행 결과 */
C:\Users\DS 14\projects\mysite
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
DEBUG = True 지만DEBUG = False 로 꼭 설정해줘야 함ALLOWED_HOSTS : 허용하는 호스트MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
'django.middleware.csrf.CsrfViewMiddleware' : csrf 방지 *csrf: 사용자가 신뢰하는 웹사이트에서 자신의 의지와는 무관하게 공격자가 의도한 특정 요청을 보내도록 유도하는 웹 보안 취약점urls.py 에서 모듈을 임포트하는 부분에 뜨는 에러 제거
**manage.py 를 이용해 서버를 구동**
python manage.py runserver
(mysite) C:\Users\DS 14\projects\mysite>python manage.py runserver

python [manage.py](http://manage.py/) runserver 0.0.0.0
→ 그러나 열리지 않음
→ 장고의 영역이 아니기 때문
→ 방화벽 설정을 해줘야 함
방화벽 - 고급 설정 - 인바운드 규칙 추가


내 ip 주소 확인
ipconfig
무선 LAN 어댑터 Wi-Fi:
연결별 DNS 접미사. . . . :
링크-로컬 IPv6 주소 . . . . : fe80::6f96:fe21:6ef3:af08%5
IPv4 주소 . . . . . . . . . : 192.168.3.64
서브넷 마스크 . . . . . . . : 255.255.252.0
기본 게이트웨이 . . . . . . : 192.168.0.1
**settings.py 모든 호스트 허용**
ALLOWED_HOSTS = ["*"]
서버 구동
python manage.py runserver 0.0.0.0:8000
결과

activate 환경변수 등록어느 위치에서든 activate 실행 가능하게 함
리눅스에선 .bashrc → alias 에 activate 등록
activate 를 실행시키는 절대 경로
"C:\Users\DS 14\venvs\mysite\Scripts\activate"
띄어쓰기가 있으므로 따옴표로 묶어줌
이 경로를 환경변수로 등록
"C:\Users\DS 14\venvs\mysite.cmd” 생성 (txt 확장자 붙어있으면 안됨)
# 입력받은 걸 다시 출력하지 말고 그냥 실행시켜라(echo 기능 끄기)
@echo off
# 실행할 프로젝트 디렉토리로 이동
cd "C:\Users\DS 14\projects\mysite"
"C:\Users\DS 14\venvs\mysite\Scripts\activate"
시스템 환경 변수 편집 - 환경 변수 - 사용자 변수 - Path
mysite.cmd.txt 생성한 경로 추가
C:\Users\DS 14\venvs\
cmd 재시작
mysite
(mysite) C:\Users\DS 14\projects\mysite>
가상환경 활성화 후 앱 생성
django-admin startapp pybo
서버 localhost/pybo 로 접속하기 위해 url 세팅
config/urls.py
from pybo import views
urlpatterns = [
...
path('pybo/', views.index),
]
/pybo url 경로는 pybo/views.py 의 index 함수 호출
index 함수는 urls.py 로부터 호출 요청을 받음
그러므로 매개변수에 request 가 들어감
pybo/views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("안녕하세요 pybo에 오신 것을 환영합니다.")
HttpResponse 는 함수
결과

config/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', include("pybo.urls")),
]
pybo/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
결과

migrate 와 테이블migrate
python manage.py migrate

x64 는 64비트
x86은 32비트
설치
데이터베이스 열기 - 프로젝트 폴더의 sqllite3 선택

models.py)pybo/models.py
from django.db import models
# Create your models here.
class Question(models.Model):
subject = models.CharField(max_length=200)
content = models.TextField()
create_date = models.DateTimeField()
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
content = models.TextField()
create_date = models.DateTimeField()
config/settings.py
INSTALLED_APPS = [
'pybo.apps.PyboConfig',
...
]
migrate
**python manage.py migrate**
...
Running migrations:
No migrations to apply.
Your models in app(s): 'pybo' have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.
makemigrations 로 파일 생성이 먼저
python manage.py makemigrations
다시 migrate
python manage.py migrate