python -m pipinstall django
django-admin startproject myproject .
settings.py
프로젝트 운영에 필요한 여러가지 기능 포함
urls.py
사용자가 접속하는 패스에 따라서 그 요청을 누가 처리할건지 지정(라우팅)
manage.py
프로젝트 진행에 필요한 유틸리티 파일
장고 실행 명령어
python -m manage runserver
서버 종료 단축키
catl + c
다른 포트 서버로 장고 실행 명령어
python -m manage runserver 8888(포트번호)
포트의 개념
0~65535의 포트가 존재
사용자가 서버 소프트웨어를 실행시킬때, 어떤 포트와 연결할지 지정한다.
서버 프로그램은 80번 포트에 접속(리스닝하고있다)
사용자가 해당 서버에 접속하기 위한 방법
http:127.0.0.1:포트번호
python 개발환경은 기본적으로 8000번 포트번호를 리스닝하게 된다.
기능 구현은 project.urls.py에서 구현하지 않고
각각의 urls.py에서 만든다
app - views.py,urls.py
views.py 는 여러 함수를 만들어 여러가지 기능을 구현한다.
사용자 접속 > project.urls.py에서 적당한 앱의 url을 연결
앱 urls.py에서는 vies.py로 이동하여, 적당한 함수를 실행하게 된다.
model을 통해 데이터베이스를 접속한다.
데이터베이스를 받아와, html,json,xml을 사용자에게 보내준다.
django-admin startapp
어떤 웹 프레임 워크를 만들건간에, 제일 먼저 해야될건 라우팅이다.
라우팅 : 경로,사용자가 접속한 각각의 경로를, 누가 처리할것인가 정하는것
project.urls.py > app.urls.py >> app.views.py
project.urls.py
urls.py에는 urlpatterns라는 리스트가 있어야하며
이 리스트 안에는 라우팅에 관련된 url이 있어야 한다.
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
설명에 적힌것과 같이 리스트 안에 추가 내용을 적어준다
path('',include('myapp.urls'))
app.views.py 수정
첫번째 함수의 파라미터 인자로 요청과 관련된 여러가지 정보가 들어오기로
약속되어 있는 객체가 전달되기로 약속되어있다.
관습적으로 매개변수의 이름은 request로한다.
HttpResponse
헤더파일 필요
Http를 이용해서 응답을 한다.
return HttpResponse('welcome')
from django.urls import path
from myapp import views
urlpatterns = [
path('',views.index),
path('create/',views.create),
path('read/<id>/',views.read),
]
from django.shortcuts import render,HttpResponse
# Create your views here.
def index(request):
return HttpResponse('welcome!')
def create(request):
return HttpResponse('Create!')
def read(request,id):
return HttpResponse('Read!'+id)
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
#관리자 페이지로 이동하기 위한 라우팅
path('',include('myapp.urls'))
]
- 웹 서버
- 필요로할만한 페이지를 미리 만들어 놔야 한다 (html1,html2,html3)
- 정적인 방식
- 장점 : 성능이 굉장히 빠르다
- 웹 애플리케이션 서버
- view.py 하나만 만들면 된다. (read/1/ : 접속하는순간 html코드를 만들어낸다)
- 동적인 방식
- 단점 : 굉장히 느리다, 그러나 컴퓨터 성능이 좋아져 신경쓸게 없다
- 단점 : 공부할점이 많다
- 장점 : 유지보수가 뛰어나다, 개인화된 정보를 그때그때 만들 수 있다.
from django.shortcuts import render,HttpResponse
import random
def index(request):
return HttpResponse('<h1>random<h1>'+str(random.random()))
아무리 복잡한 어플리케이션이라도 네가지 작업에 갇혀있다.
Create,Read,Update,Read
from django.shortcuts import render,HttpResponse
import random
student = [
{'id':1,"name":"son","age":29},
{'id':2,"name":"an","age":30},
{'id':3,"name":"jeon","age":23},
]
def HTMLTemplate(articleTag):
global student
stirng = ''
for text in student:
stirng += f'<li><a href = "/read/{text["id"]}">{text["name"]}</a></li>'
return f'''
<html>
<head>
<title>My Simple Page</title>
</head>
<body>
<h1><a href = "/">Django</a><h1>
{articleTag}
<p>This is just a simple example of an HTML page.</p>
<ul>
{stirng}
</ul>
</body>
</html>
'''
# Create your views here.
def index(request):
article = '''
<h1>Welcom<h1>
Hello,Django
'''
return HttpResponse(HTMLTemplate(article))
def read(request,id):
global student
article = ''
for text in student:
if text['id'] == int(id):
article = f'<h2>{text["name"]} {text["age"]}age</h2>'
return HttpResponse(HTMLTemplate(article))
def create(request):
return HttpResponse('Create!')
return HttpResponse(HTMLTemplate(article))
HttpResponse : 클라이언트에 응답을 다시 보내는 메소드
HTMLTemplate : 코드의 재 사용성을 높이기위한 함수
index와 read함수에서 return 값으로 호출하고 있는데,
article변수에 데이터를 담아 매개값으로 보내고 있다.