python -m venv (가상환경 이름)
mkdir (프로젝트이름)
cd (폴더이름)
: 폴더 이동pip install django
conda install django
django-admin startproject (프로젝트이름) .
python manage.py migrate
python manage.py runserver
python manage.py startapp (app이름)
main
은 기본으로 선언하고 필요한 만큼 app을 선언한다.ALLOWED_HOSTS = ["*"]
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"main", # 보통은 마지막에 넣는데 맨 위에 넣으시는 분도 있으십니다.
]
위 파일에 직접 만든 앱의 이름을 기록합니다.
from django.contrib import admin
from django.urls import path
from main.views import index, bloglist, blogdetails, userdetails
urlpatterns = [
path("admin/", admin.site.urls),
path("", index),
path("blog/", bloglist),
path("blog/<int:pk>/", blogdetails),
path("user/<str:user>/", userdetails),
]
admin
과 path
부분은 그대로 가져간다고 생각하면 되고 main.views 임포트 하는 부분에 URL 주소를 입력하면 된다. 이 주소에 대한 정보는 views.py파일에서 가져온다.
urlpatterns
내부에는 path
를 활용하여 앱의 URL을 정의한다. <int:pk>
혹은 <str:user>
부분이 생소할 수 있는데 이 부분들은 URL 뒤에 DB의 키(식별하는 데에 사용)가 들어간다.
path("", index)
: 웹 사이트의 루트 URL을 입력하면 index
라는 뷰를 호출한다. 다른 코드도 비슷한 기능을 한다.# DB와 비슷한 방식으로 저장된 리스트
blog_list = [
{
"id": 1,
"title": "장고는 너무 재미있어!!!",
"content": "This is the content of blog 1",
"author": "Author 1",
},
{
"id": 2,
"title": "파이썬도 너무 재미있어!!!!",
"content": "This is the content of blog 2",
"author": "Author 2",
},
{
"id": 3,
"title": "자바스크립트는 별로였어!!!",
"content": "This is the content of blog 3",
"author": "Author 3",
},
]
user_list = [
{
"id": 1,
"username": "hojun",
"email": "hojun@gmail.com",
"password": "1234",
},
{
"id": 2,
"username": "jihun",
"email": "jihun@gmail.com",
"password": "1234",
},
{
"id": 3,
"username": "junho",
"email": "junho@gmail.com",
"password": "1234",
},
]
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("<h1>환영합니다! index 페이지입니다.</h1>")
def bloglist(request):
blogitem = ""
for i in blog_list:
blogitem += f'<li><a href="/blog/{i["id"]}">{i["title"]}</a></li>'
return HttpResponse(
f"""
<h1>블로그 리스트</h1>
<ul>
{blogitem}
</ul>
"""
)
def blogdetails(request, pk):
blog = blog_list[pk - 1]
return HttpResponse(
f"""
<h1>{blog['title']}</h1>
<p>{blog['author']}</p>
<p>{blog['content']}</p>
"""
)
def userdetails(request, user):
finduser = None
for i in user_list:
if i["username"] == user:
finduser = i
if finduser is None:
return HttpResponse("해당 유저가 없습니다.")
return HttpResponse(
f"""
<h1>{finduser['username']} 님의 정보</h1>
<p>이름: {finduser['username']}</p>
<p>이메일: {finduser['email']}</p>
"""
)
위 코드와 같이 urls.py에서 선언한 URL들에 대한 함수를 선언하여 화면에 표시할 텍스트를 결정한다.
python manage.py runserver