[Linux]부트캠프 - 파일 및 폴더 생성
파일 및 폴더 생성
path('경로', views.기능)
은 javascript의 onclick
같은 콜백기능을 수행한다.
''
아무것도 받지 않은 상태는 http://127.0.0.1:8000/를 나타냄.ctrl
단축키를 누르고 코드들을 눌러보면 그것들이 어떻게 만들어 졌는지 더 상세하게 볼 수 있다.HttpResponse()
: http규약에 맞춰 응답해줘. 라는 뜻templates
를 먼저 작성하고 -> views.py
-> urls.py
순으로 코딩을해도 편하다.(이 포스팅에서는 그 방식을 사용할 것이다.)/
: root(나를 품고 있는 제일 상위 위치)./
: 현재 위치(내가 존재하는)../
: 내 기준으로 상위 디렉토리/test
: 나와 같은 경로(위치)에 있는 test/test/
: test의 하위에 있는 상태hello01(App)의 views.py에 내용 추가
def test(request):
return HttpResponse("<h1><a href='/hello01'>return</a></h1>")
hello01(App)의 urls.py에 내용 추가
path('test/',views.test),
그렇다면, 127.0.0.1:8000/hello01/my/ 라고 요청했을 때 <h1>자기이름</h1>
이 나오게 만들어보자.
hello01(App)의 urls.py에 내용 추가
path('my/', views.my),
hello01(App)의 views.py에 내용 추가
def my(request):
return HttpResponse("<h1>전동준</h1>")
확인
이제 요청에 대한 응답을 그려주는 곳인 templates에 대해서 알아보자.
django-admin startproject tags
입력해서 tags라는 프로젝트 생성
tags(App)에 settings.py로 가보자
from pathlib import path를 이용해
Path(_ _ file _ _ ) : 현재 파일의 경로를 잡아줌
Path(_ _ file _ _ ).resolve().parent.parent
tags(Pj)
를 가리킴BASE_DIR에는 프로젝트의 절대경로가 들어가 있다.
밑으로 가서 TEMPLATES를 보자
그 안의 DIRS의 경로를 잡아준다.
'DIRS': [BASE_DIR/'templates'],
해당 프로젝트 하위에 templates
라는 폴더를 만듦
tags 프로젝트 하위에 templates 폴더를 생성해준다.
template 폴더 안에 index.html 파일 생성(html5로)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>Hello, {{ name }} </h1>
</body>
</html>
{{name}}
name이라는 변수가 있어 동적인 파일이다.
{{변수}}
: https://docs.djangoproject.com/en/4.0/ref/templates/language/
왜냐하면, 변수 값에 따라 값이 바뀌니깐.
tags(App) 하위에 views.py 생성 후 내용 작성
from django.shortcuts import render
def index(request):
return render(request, 'index.html', {'name': 'dongjun'})
# 요청이 있을 시에 index.html의 name이라는 변수에 donjgun이 나오도록 그려(render)서 전달할 것이다.라는 뜻이다.
render
그려주기 호출
from django.shortcuts import render
tags(App)의 urls.py로 가서 내용 작성
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
]
같은 위치에 있는 views를 불러오고(import)
tags 프로젝트로 경로 잡고, python manage.py runserver 후 확인(서버 실행)
잠깐 Tip
tags 프로젝트 밑에 var라는 앱 생성
python manage.py startapp var
templates 폴더 밑에 var라는 폴더 생성
그리고 그 var 폴더 안에 index.html 생성
index.html 안에 내용추가
<a href="var01/">var01</a>
<br/>
variables01.html 도 생성 후 내용 추가
<h1>{{ lst.0 }}</h1>
<p>{{ lst.1 }}</p>
var(App)의 views.py로 가서 작성
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, "var/index.html")
# index라는 요청을 받으면 templates/var/index.html을 그려줄 것이다.
def variables01(request):
my_list = ['python', 'django', 'templates']
return render(request, "var/variables01.html", {"lst": my_list})
# variables01이라는 요청을 받으면 my_list를 lst라는 변수에 보내줄 것
var(App) 밑에 urls.py를 생성 후 작성
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
path('var01/', views.variables01),
]
그리고 tags(App)의 urls.py 에 var(App)의 url을 연결해줘야한다.
tags(App)의 urls.py로 가서 코드 수정
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index),
path('var/', include('var.urls')),
]
templates 폴더 바로 밑의 index.html로 가서 작성
<a href="var/"></a>
<br>
서버 실행하고 확인
templates 폴더 밑에 var폴더 밑에 variables02.html을 생성
바디 태그에 <h1>{{dct.class}} 반 {{dct.name}} 님 환영합니다!</h1>
작성
var(App)의 views.py로 가서 해당내용 작성
def variables02(request):
my_dict = {'class' : 'multi', 'name': 'hong-gd'}
return render(request, 'var/variables02.html', {'dct': my_dict})
var(App)의 urls.py로 이동 후 작성
path('var02/', views.variables02),
templates 폴더 하위의 var폴더 하위의 index.html로 가서 작성
<a href="var02/">var02</a>
<br>
결과 확인
templates/var 폴더에 forloop.html 생성
바디태그에 내용 작성
{% for i in number %}
<p>{{i}}</p>
{% endfor %}
# 서버에서 만들어준 것을 가지고 응답해주고 있는 것
# 그래서 동적이다.
{% 명령문 %} 사용 시에는 {% end명령문 %}라고 꼭 적어줘야함.
var(App)의 views.py로 가서 작성
def for_loop(request):
return render(request, 'var/forloop.html', {"number": range(1, 11)})
장고가 가진 기본 템플릿에서는 파이썬의 for i in range가 안먹히기 때문에 views에서 만들어서 보내줘야함.
var(App)의 urls.py로 이동 후 작성
path('forloop/', views.for_loop),
templates/var 폴더의 index.html 실행 후 작성
<a href="forloop">forloop</a>
<br>
localhost/var/forloop/ 서버 확인
if명령문 해보자
templates/var 폴더 안에 if01.html 생성 후 작성
{% if user.id %}
<h1>Hello, {{ user.id }}</h1>
{% endif %}
var(App)의 views.py로 가서 작성
def if01(request):
return render(request, 'var/if01.html', {"user": {'id': 'kim-sd', 'job': 'student'}})
var(App)의 urls.py로 가서 작성
path('if01/', views.if01),
templates/var 폴더의 index.html에 작성
<a href="if01/">if01</a>
서버실행 후 확인
if 한번 더 해보자.
templates/var 폴더에 if02.html 생성 후 작성
{% if role == 'admin' %}
<!-- role이 admin 이라면 -->
<h1>Admin Page</h1>
<a href="#">user list</a><br>
<a href="#">user delete</a>
{% elif role == 'manager' %}
<!-- 그게 아니라 role이 manager 라면-->
<h1>Manage Page</h1>
<a href="#">user list</a>
{% else %}
<!-- 모두 아니라면 -->
<h1>User Page</h1>
<a href="#">my</a>
{% endif %}
var(App)의 views.py에 가서 작성
def if02(request):
return render(request, 'var/if02.html', {"role": "manager", "id": "multi"})
var(App)의 urls.py에 가서 작성
path('if02/', views.if02),
templates/var 의 index.html로 가서 작성
<a href="if02/">if02</a>
서버 실행 후 확인
href기능 사용해보자
templates/var 폴더에 href.html을 생성 후 작성
<a href="{% url 'index' %}">go index</a>
var(App)의 views.py로 가서 작성
def href(request):
return render(request, 'var/href.html')
var(App)의 urls.py로 가서 작성
path('href/', views.href),
그리고 기존의 index.html로 연결시켜주는 코드에 name=’index’ 추가
path('', views.index, name='index'),
templates/var 폴더의 index.html로 가서 작성
<a href="href/">href</a>
서버 작동 후 확인
get과 post
templates/var 폴더 안에 get.html , post.html 생성
get.html에 작성
<h1>GET</h1>
post.html에 작성
<h1>POST</h1>
var(App)의 views.py로 이동 후 작성
from django.shortcuts import rende, redirect
def get_post(request):
if request.method == 'GET':
return render(request, 'var/get.html')
elif request.method == 'POST':
return render(request, 'var/post.html')
else:
return redirect('index')
var(App)의 urls.py로 이동 후 작성
path('request/', views.get_post),
var(App)의 index.html로 이동 후 작성
<form action="request/" method="post">
<input type="submit" value="post">
</form>
확인해보면 get방식은 잘 되는데 post는 안된다.(403 forbidden 에러)
그래서 index.html의 form 태그 안의 내용 수정
<form action="request/" method="post">{% csrf_token %}
<input type="submit" value="post">
</form>
submit버튼(post) 클릭 후 확인
tag 프로젝트에 새로운 statics(App) 생성
python manage.py startapp statics
tag(App)의 setting.py로 가서 static에 대한 설정 작성
STATIC_URL = 'static/'
STATICFILES_DIRS = [BASE_DIR/'static']
# 스태틱 파일들이 들어갈 경로다.
tags 프로젝트 밑에 static 폴더 생성
static 폴더 밑에 style.css 생성
style.css에 작성
h1{
color: red;
}
templates 폴더 밑에 statics라는 폴더 생성하고 그 안에 index.html 생성
templates/statics 폴더의 index.html에 내용 작성
<head>
<link rel="stylesheet" href="{% static 'style.css' %}">
</head>
<body>
<h1>Django Static</h1>
</body>
statics(App)의 views.py로 이동 후 작성
def index(request):
return render(request, 'statics/index.html')
statics(App)에 urls.py 생성 후 작성
from django.urls import path
from . import views
urlpatterns = [
path('', views.index),
]
tag(App)안의 urls.py로 가서 statics(App)의 urls.py과 연결
path('statics/', include('statics.urls')),
templates 바로 하위의 index.html에 내용 작성
<a href="statics/">static files</a>
서버 작동 후 확인해보면 syntax error
장고 documentation 참고 : https://docs.djangoproject.com/en/4.0/howto/static-files/deployment/
templates/statics 폴더의 index.html로 가서 내용을 추가해주자.
<head>
{% load static %} <!--이게 정적 탬플릿 태그-->
<link rel="stylesheet" href="{% static 'style.css' %}">
</head>
서버 가동 후 확인
javascript도 적용해보자.
tags 프로젝트 하위의 static 폴더에 test.js 생성 후 작성
onload=function(){
alert("js!");
}
templates/statics 폴더 안에 index.html에 내용 작성
<head>
<script src="{% static 'test.js' %}"></script>
</head>
확인
django-admin startproject dbtest
sqlite3.exe
만 사용할 것python manage.py migrate
sqlite3 db.sqlite3
.table
.exit
dbtest 프로젝트 안의 dbtest(App) 밑에 models.py 생성 후 작성
from django.db import models
# 장고가 갖고있는 db라는 기능 중 models를 불러옴
class MyBoard(models.Model):
myname = models.CharField(max_length=100)
mytitle = models.CharField(max_length=500)
mycontent = models.CharField(max_length=2000)
mydate = models.DateTimeField()
dbtest(App)의 settings.py로 이동 후 INSTALLED_APPS 수정
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'dbtest',
]
models.py에 클래스를 만들어 놓았는데, 이 클래스를 django안의 manager가 테이블로 변환시켜 database로 보낸다.
python manage.py makemigrations dbtest
명령
Migrations for 'dbtest':
dbtest\migrations\0001_initial.py
- Create model MyBoard
0001_initial.py를 확인해보면 id(primary key)가 자동으로 생성되어있음(지정하지 models.py에서 설정하지 않았을 때)
python manage.py sqlmigrate dbtest 0001
로 한번 확인해보자.
BEGIN;
--
-- Create model MyBoard
--
CREATE TABLE "dbtest_myboard" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "myname" varchar(100) NOT NULL, "mytitle" varchar(500) NOT NULL, "mycontent" varchar(
2000) NOT NULL, "mydate" datetime NOT NULL);
COMMIT;
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, dbtest, sessions
Running migrations:
Applying dbtest.0001_initial... OK
dbtest 0001이 실행되었다고 한다.
sqlite3 db.sqlie3
.table
python manage.py shell
from dbtest.models import MyBoard
from django.utils import timezone
test = MyBoard(myname='testuser', mycontent='test 1234', mydate=timezone.now())
type(test)
test.save()
MyBoard.objects.all()
select * from MyBoard 라고 생각하면 된다.
<QuerySet [<MyBoard: MyBoard object (1)>]>
exit()
종료
dbtest/dbtest/templates 폴더 생성 후 그 안에 index.html 생성
index.html 안에 내용 작성
<body>
<h1>Hello, Django (with sqlite3)</h1>
<table border="1">
<col width="50" />
<col width="100" />
<col width="500" />
<col width="100" />
<tr>
<th>번호</th>
<th>작성자</th>
<th>제목</th>
<th>작성일</th>
</tr>
{% if not list %}
<tr>
<th colspan="4">--------------작성된 글이 없습니다.-------------</th>
</tr>
{% else %}
{% for data in list %}
<tr>
<td>{{ data.id }}</td>
<td>{{ data.myname }}</td>
<td><a href="#">{{ data.mytitle }}</a></td>
<td>{{ data.mydate }}</td>
</tr>
{% endfor %}
{% endif %}
<tr>
<td colspan="4" align="right">
<input type="button" value="글작성" onclick=""/>
</td>
</tr>
</table>
</body>
dbtest(App) 폴더에 views.py 생성후 내용 작성
from django.shortcuts import render
from .models import MyBoard
def index(request):
return render(request, 'index.html', {'list' : MyBoard.objects.all()})
dbtest(App)의 urls.py 이동 후 내용 작성
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index, name='index'),
]
서버 실행해서 확인해보면 이뿌게 나온당헿
파일 및 폴더 생성
파일 시스템 탐색
도움말(man -> manual)
명령어 기초
유닉스(Unix)
특정 코드 지연 실행 - DispatchQueue.main.asyncAfter(deadline: )
Naming Conventions
안드로이드 폰과 맥북에어 M1 USB 테더링 성공
Simulator 풀 스크린 사용 방법
10807번 - 개수 세기
프로그래머스 Lv.1 풀이 코드 모음
프로그래머스 Lv.1 풀이 코드 모음
11047번 - 동전 0
11659번 - 구간 합 구하기 4
14888번 - 연산자 끼워넣기
9184번 - 신나는 함수 실행
24416번 - 알고리즘 수업 - 피보나치 수 1
2580번 - 스도쿠
9663번 - N-Queen
15652번 - N과 M (4)
15651번 - N과 M (3)
15650번 - N과 M (2)
25305번 - 커트라인
25304번 - 영수증
3003번 - 킹, 퀸, 룩, 비숍, 나이트, 폰
15649번 - N과 M (1)
2004번 - 조합 0의 개수
1676번 - 팩토리얼 0의 개수
9375번 - 패션왕 신해빈
1010번 - 다리 놓기
11051번 - 이항 계수 2
11050번 - 이항 계수 1
3036번 - 링
2981번 - 검문
1934번 - 최소공배수
2609번 - 최대공약수와 최소공배수
1037번 - 약수
5086번 - 배수와 약수
1358번 - 하키
1004번 - 어린 왕자
1002번 - 터렛
3053번 - 택시 기하학
2477번 - 참외밭
4153번 - 직각삼각형
3009번 - 네 번째 점
1085번 - 직사각형에서 탈출
11478번 - 서로 다른 부분 문자열의 개수
1269번 - 대칭 차집합
1764번 - 듣보잡
10816번 - 숫자 카드 2
1620번 - 나는야 포켓몬 마스터 이다솜
14425번 - 문자열 집합
10815번 - 숫자 카드
18870번 - 좌표 압축
10814번 - 나이순 정렬
1181번 - 단어 정렬
11651번 - 좌표 정렬하기 2
11650번 - 좌표 정렬하기
1427번 - 소트인사이드
2108번 - 통계학
10989번 - 수 정렬하기 3
2751번 - 수 정렬하기 2
2750번 - 수 정렬하기
22.06.25 ~ 27 부산 먹부림 기록
1436번 - 영화감독 숌
1018번 - 체스판 다시 칠하기
7568번 - 덩치
2231번 - 분해합
2798번 - 블랙잭
11729번 - 하노이 탑 이동 순서
2447번 - 별 찍기 - 10
17478번 - 재귀함수가 뭔가요?
10870번 - 피보나치 수 5
10872번 - 팩토리얼
9020번 - 골드바흐의 추측
4948번 - 베르트랑 공준
1929번 - 소수 구하기
11653번 - 소인수분해
2581번 - 소수
1978번 - 소수 찾기
10757번 - 큰 수 A+B
2839번 - 설탕 배달
2775번 - 부녀회장이 될테야
10250번 - ACM 호텔
2869번 - 달팽이는 올라가고 싶다
1193번 - 분수찾기
2292번 - 벌집
1712번 - 손익분기점
1316번 - 그룹 단어 체커
2941번 - 크로아티아 알파벳
5622번 - 다이얼
2908번 - 상수
1152번 - 단어의 개수
1157번 - 단어 공부
2675번 - 문자열 반복
10809번 - 알파벳 찾기
11720번 - 숫자의 합
11654번 - 아스키 코드
1065번 - 한수
4673번 - 셀프 넘버
15596번 - 정수 N개의 합
4344번 - 평균은 넘겠지
8958번 - OX퀴즈
25083번 - 새싹
Spark Bigdata Pipeline
Spark 3일차
Spark 2일차
1546번 - 평균
Spark 1일차
Hadoop🐘
3052번 - 나머지
2577번 - 숫자의 개수
2562번 - 최댓값
10818번 - 최소, 최대
Linux
MongoDB 조회 문제
MongoDB
1110번 - 더하기 사이클
10951번 - A+B - 4
Oracle 3️⃣
ORACLE 연습용 문제 만들기 숙제
10952번 - A+B - 5
Oracle 2️⃣
2480번 - 주사위 세개
Oracle Day1️⃣
Tensorflow
Big Data
2525번 - 오븐 시계
10871번 - X보다 작은 수
2439번 - 별 찍기 - 2
2438번 - 별 찍기 - 1
11022번 - A+B - 8
11021번 - A+B - 7
2742번 - 기찍 N
2741번 - N 찍기
15552번 - 빠른 A+B
8393번 - 합
10950번 - A+B - 3
9️⃣ 2739번 - 구구단
2884번 - 알람 시계
14681번 - 사분면 고르기
⛏크롤링(Crawling)
2753번 - 윤년
Django 복습 4️⃣
Django 복습 3️⃣
💯 9498번 - 시험 성적
1330번 - 두 수 비교하기
✖ 2588번 - 곱셈
➗ 10430번 - 나머지
Django 복습 2️⃣
Django 복습 1
MySQL 복습!
⁉10926번 - ??!
🆎1008번 - A/B
👩🦲 18108번 - 1998년생인 내가 태국에서는 2541년생?!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🎈✨경 축✨🎈
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
선형 자료구조(1일차에 이어서)
🆎10998번 - A×B
🆎1001번 - A-B
🆎1000번 - A+B
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐶10172번 - 개
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
🐱10171번 - 고양이
[해당 포스트는 유튜버 나동빈님의 영상을 참고했습니다.]
❤10718번 - We love kriii
🖐2557번 - Hello World
Today I Learned(TIL)📌 (2021.12.31)
Today I Learned(TIL)📌 (2021.12.30)
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!
[noitce!!] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!