안녕하세요
리눅스 환경에서 장고 설치 및 실행 방법을 알려드리겠습니다.
우선 터미널에서 파이썬이 설치되어 있어야 합니다.
sudo apt install python3
장고 프레임 워크 설치
python3 -m pip install django
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
-m pip install django ====> 폴더명: 장고 설치폴더 지정
1.프로젝트 파일 생성
django-admin startproject myproject
이때 팁은 폴더를 만드시고 리눅스 환경에서 cd django로 들어간 이후에 다음 명령문으로 어드민을 설정해야 합니다.
====> myproject라는 폴더 생성 후 장고 어드민 설정
(이것때문에 5번만에 제대로 구현하였어요;)
python3 -m pip install django ======> 프레임워크 설치
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
-m pip install django ====> 폴더명: 장고 설치폴더 지정
django-admin startproject ====> 장고 어드민 설정
django-admin startproject myproject ====> 폴더명: 장고 설치폴더 지정후 myproject라는 이름의 폴더명 설정 여러가지 파일들이 만들어짐 setting init 등등
python3 manage.py
python3 manage.py runserver ====> 장고 실행하면 포트 설정하라고 나옴
python3 manage.py runserver 8888 ====> 포트 번호 변경하고 싶으면 이런식으로 숫자 설정
django-admin startproject myproject ====>
폴더명: 장고 설치폴더 지정후 myproject라는 이름의 폴더명 설정 여러가지 파일들이 만들어짐 setting init 등등
또한 nanage.py라는 파일이 생성됩니다.

python3 manage.py
서버 실행
python3 manage.py runserver ====> 장고 실행하면 포트 설정하라고 나옴
python3 manage.py runserver 8888 ====> 포트 번호 변경하고 싶으면 이런식으로 숫자 설정
포트 회피하는 방법: 유저별로 포트를 할당
생활코딩에서 아주 자세히 알려주십니다.
저는 10번 봤습니다.
이해가 안가시면 10번 보시길 바랍니다.
https://www.youtube.com/watch?v=QX8CQMycDa0&list=PLuHgQVnccGMDLp4GH-rgQhVKqqZawlNwG&index=4
배송처리, 회원정보 등 여러가지 섹션을 만듬
이 전체를 MVT 모델 MVC모델이라고 부름
장고 웹프레임워크: 목적에 따라 가져다 쓸 수 있도록 만들어놓은 틀
파이썬 프로그래밍 자체가 다른 프로그래밍에 비해 배우기 쉽고 쓰기 편하게 되어 있기 때문에 개발기간을 상당히 단축시킬 수 있습니다.
특징
제어가 넘어가고 사고가 주입됨
MVC 패턴 기반 MTV (기본적으로 Model-View-Controller 를 기반으로 한 프레임워크)
ORM(Object-relational mapping) 기능 지원
쉬운 DB관리를 위해 프로젝트를 생성하면서 관리자기능을 제공
쉬운 URL 파싱 기능 지원
동일한 소스코드에서 다른 나라에서 용이하도록 번역, 날짜/시간/숫자 등의 포맷 타임존 지정 등의 기능을 제공
라우팅이란? 누가 보내진 정보를 처리할것인가 경로를 설정하는것
리눅스 환경에서 장고 설치방법
우선 파이썬이 설치되어 있어야 합니다. sudo apt install python3
python3 -m pip install django ======> 프레임워크 설치
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py
-m pip install django ====> 폴더명: 장고 설치폴더 지정
django-admin startproject ====> 장고 어드민 설정
django-admin startproject myproject ====> 폴더명: 장고 설치폴더 지정후 myproject라는 이름의 폴더명 설정 여러가지 파일들이 만들어짐 setting init 등등
python3 manage.py
#실행 관련 내용 해당 페이지 참조
#https://docs.djangoproject.com/en/4.2/ref/django-admin/
python3 manage.py runserver ====> 장고 실행하면 포트 설정하라고 나옴
python3 manage.py runserver 8888 ====> 포트 번호 변경하고 싶으면 이런식으로 숫자 설정
포트 회피하는 방법: 유저별로 포트를 할당
https://www.youtube.com/watch?v=QX8CQMycDa0&list=PLuHgQVnccGMDLp4GH-rgQhVKqqZawlNwG&index=4
배송처리, 회원정보 등 여러가지 섹션을 만듬
django-admin startapp dama 담아라는 폴더명 생성하여 하나의 앱 실행
이 전체를 MVT 모델 MVC모델이라고 부름
<프론트>
url.py/login 앱1- 로그인
url.py/membership 앱2- 회원가입
url.py/find_id 앱3- 아이디 찾기
url.py/location 앱4- 분리배출
url.py/event 앱5- 행사
url.py/information 앱6- 정보습득
url.py/community 앱7- 게시판
<백엔드>
url.py/member
url.py/product
url.py/delivery
라우팅이란?
라우팅 구조
1.함수
2.객체 - 그 객체의 메서드를 부르는 방법 ex) home.as_view()
3.연결 - include 함수를 통해 다른 url로 위임
admin.site.urls- 함수형 표기
9장
콘솔창에서 network-headers를 클릭하면 GET 방식인 것을 확인할 수 있습니다.

10장-생성 기능 구현
?id 리드로 전달됨 =>query string => get방식
변경
create => method=post 방식으로 변경이 가능함
csrf django skip을 통해 disable 즉 csrf를 면제하겠다.
@csrf_exempt
def create(request)라는 객체를 생성하여 httpresponse(htmlTemplate(artivle)) 리턴
placeholder : 도움말을 보여주는 기능
p태그: 단락
textarea: 여러줄의 텍스트 입력할 때 쓰는 태그
form 태그: 폼을 전달
?title=1 : query string 즉, title이 1이라는 정보를 갖고오는 겟방식으로 데이터를 갖고오는 방식
브라우저가 서버에 있는 데이터를 변경하려는 작업
=> post 방식으로 해결이 가능하며(method="post"), csrf오류를 해결할 수 있음
@csrf_exempt
데이터 제출을 했을때 전송이 되며 오류를 막아줌.
def create(request)라는 객체를 생성하여 httpresponse(htmlTemplate(artivle)) 리턴
11장- 생성기능(request response object)
1) get방식
2) elif post방식
post: 사용자의 정보를 받아 변경
title =
body =
url = '/read/'+str(nextId)
nextId = nextId +1
redirect(url)
12장-삭제
contextUI 상세보기를 통해서만 보여지게
13장-업데이트
14장-마무리
template engine
-html과 파이썬 코드가 헤깔릴 시 실수 하지 않도록 템플릿 제공드립니다.
<project 폴더 url.py>
"""
URL configuration for daegeunproject project.
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
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'))
"""
from django.contrib import admin
from django.urls import path, include
#앱에 url을 넘겨주는 역할
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('damsapp.urls'))
]
<app 폴더 url.py>
from django.contrib import admin
from django.urls import path
from damsapp import views
#views.에 위임하는 행위
urlpatterns = [
path('', views.index),
path('create/', views.create),
path('read/<id>/', views.read),
path('update/<id>/', views.update),
path('delete/', views.delete)
]
<app 폴더 views.py 코드>
from django.shortcuts import render, HttpResponse, redirect
import random
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import redirect
nextId = 4
topics = [
{'id':1, 'title':'routing', 'body':'Routing is ..'},
{'id':2, 'title':'view', 'body':'View is ..'},
{'id':3, 'title':'Model', 'body':'Model is ..'}
]
# 받아서 출력
def HTMLTemplate(articleTag, id=None):
contextUI = ''
global topics
print(id)
if id != None:
contextUI = f'''
<li>
<form action = "/delete/" method="post">
<input type="hidden" name="id" value={id}>
<input type= "submit" value="delete">
</form>
</li>
<li><a href="/update/{id}">update</a></li>
'''
ol = ''
for topic in topics:
ol += f'<li><a href="/read/{topic["id"]}">{topic["title"]}</a></li>'
return f'''
<html>
<body>
<h1><a href="/">Django</a></h1>
<ul>
{ol}
</ul>
{articleTag}
<ul>
<li><a href="/create/">create</a></li>
{contextUI}
</ul>
</body>
</html>
'''
# Create your views here.
def index(request):
article = '''
<h2>Welcome</h2>
Hello, Django
'''
return HttpResponse(HTMLTemplate(article))
def read(request, id):
print(id)
global topics
article = ''
for topic in topics:
# print(type(topic['id']), type(id))
if topic['id'] == int(id):
article = f'<h2>{topic["title"]}</h2>{topic["body"]}'
return HttpResponse(HTMLTemplate(article,id))#
@csrf_exempt
def create(request):
global nextId
if request.method == 'GET':
article = '''
<form action="/create/" method="post">
<p><input type="text" name="title" placeholder="title"></p>
<p><textarea name="body" placeholder="body"></textarea></p>
<p><input type="submit"></p>
</form>
'''
return HttpResponse(HTMLTemplate(article))
elif request.method == 'POST':
title = request.POST['title']
body = request.POST['body']
newTopic = {"id":nextId, "title":title, "body":body}
topics.append(newTopic)
url = '/read/'+str(nextId)
nextId = nextId + 1
return redirect(url)
@csrf_exempt
def update(request,id):
global topics
if request.method =='GET':
for topic in topics:
if topic['id'] ==int(id):
selectedTopic = {
"title":topic['title'],
"body":topic['body']
}
article = f'''
<form action="/update/{id}" method="post">
<p><input type="text" name="title" placeholder="title" value={selectedTopic["title"]}></p>
<p><textarea name="body" placeholder="body">{selectedTopic['body']}</textarea></p>
<p><input type="submit"></p>
</form>
'''
return HttpResponse(HTMLTemplate(article, id))
elif request.method == 'POST':
title = request.POST['title']
body = request.POST['body']
for topic in topics:
if topic['id'] == int(id):
topic['title'] = title
topic['body']= body
return redirect(f'/read/{id}')
@csrf_exempt
def delete(request):
global topics
if request.method =='POST':
id = request.POST['id']
newTopics = []
for topic in topics:
if topic['id'] != int(id):
newTopics.append(topic)
topics = newTopics
return redirect('/')
감사합니다.

'django' 카테고리의 다른 글
[리눅스환경] 장고 활용하여 SQL 개발서버 만들기 2 (0) | 2023.09.12 |
---|---|
[리눅스 환경] Django에서 mysql 실행 및 데이터 넣고 확인하는 방법 (0) | 2023.09.11 |
장고로 배우는 쉽고 빠른 웹개발 파이썬 웹프로그래밍 (0) | 2023.08.29 |
django 활용하여 파이썬과 pymysql 연동하는 방법 (0) | 2023.08.27 |