일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- BFS
- 백트래킹
- 실습
- DP
- 프로그래머스
- codetree
- 파이썬
- DFS
- 데이터베이스
- 소프트웨어공학
- B대면노래방
- MyPlaylist
- SQL
- 최소스패닝트리
- Planned
- 종합설계
- 코드트리
- programmers
- 장고
- django
- 동적계획법
- minimum spanning tree
- 모각코
- 백준
- 마라마라빔
- Kruskal
- 알고리즘
- 그리디알고리즘
- 함밥
- Bellman-Ford
- Today
- Total
목록전체 글 (242)
Leta Learns
static 파일 : 이미지, CSS, JS 파일처럼 내용이 고정되어 있어서 응답을 할 때 별도의 처리 없이 파일 그대로 보내주면 되는 파일들 => 미리 저장해두고 필요할 때 불러오는 파일 앱 폴더 안에 static 폴더 생성 이미지 다운 후 static 폴더에 해당 이미지 저장 settings.py import os from pathlib import Path BASE_DIR = Path(__file__).resolve().parent.parent STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'blog', 'static') # BASE_DIR/blog/static # os.path.join(BASE_DIR, '앱이름', 'st..
template 상속 : 기반이 되는 하나의 template을 만들고, 그것을 기반으로 다른 html을 작성하는 기법 => base.html (project 폴더 안에 templates 폴더 생성한 후 base.html 작성) (그동안 앱 안에 templates 만들어줬던 거랑 다름) {% block content %} {% endblock %} => 장고 내장 명령어. block content와 endblock 사이에 페이지마다 필요한 정보가 들어감. base.html 생성한 후에 장고에게 생성했다고 알려줘야 함. project폴더에 있는 settings.py TEMPLATES에서 'DIRS'에 빈 리스트가 있는데 해당 리스트에 base.html의 경로 넣기. => [프로젝트 폴더명]/templates..
delete는 별도의 html 파일 만들 필요 x views.py (=> delete 함수 정의) def delete(request, id): blog = Blog.objects.get(id=id) blog.delete() return redirect('home') 어떤 글을 삭제할 것인지 id 받고 그 id에 해당하는 게시글을 blog 변수에 담는다. blog.delete() 함수로 삭제하고 삭제한 후에는 urls.py에서 name="home"인 주소로 redirect urls.py path('delete/', delete, name='delete'), 마지막으로 detail.html에서 삭제하기 버튼만 만들어주면 끝. Delete Post => urls.py에서 path converter로 id값 받..
update.html 만들고 views.py, urls.py 수정 글을 update 하기 위해 필요한 정보들 어떤 글을 수정할 것인지 (글의 id) 수정하기 전 내용 {% url 'update' blog.id %} => 링크를 눌렀을 때 update하고자 하는 글의 id를 넘겨준다. views.py의 update함수에 blog.id를 인자로 넘김. urls.py path("update/", update, name="update") update/ => 글의 id를 id라는 변수로 받겠다는 뜻 views.py def update(request, id): blog = Blog.objects.get(id = id) return render(request, 'update.html', {"blog":blog}) b..
HTTP의 GET, POST 메소드 GET => 데이터를 얻기 위한 요청, 데이터가 URL에 보임 POST => 데이터를 생성하기 위한 요청, URL에 데이터 노출 x, csrf 공격 방지 csrf (사이트 간 요청 위조, 크로스 사이트 요청 위조, Cross-site request forgery) : 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격. 사용자가 웹사이트에 로그인한 상태에서 csrf 공격 코드가 삽입된 페이지를 열면, 공격 대상이 되는 웹사이트는 위조된 공격명령을 믿을 수 있는 사용자가 발송한 것이라고 판단. -> 공격에 노출됨. => form 태그 안에 반드시 {%csrf_token%} 이라는 템플릿 변수 적어줘야 함. 2021.07.03 - ..
python에서 입력 받을 때 input() 대신 sys.stdin.readline 사용 => 시간 단축 알고리즘 문제 풀 때 반복문으로 여러 줄을 입력받는 경우 반드시 sys.stdin.readline() 사용하기. 입출력 속도 비교 : sys.stdin.readline > raw_input() > input() (raw_input()은 파이썬 3.x 부터 없어짐) ex) num = int(input()) => num = int(sys.stdin.readline()) 사용할 때 import sys 선언해주어야 함. sys.stdin.readline() #한 라인 입력받을 때 => 한 줄 단위로 입력받으므로 개행문자도 같이 입력받음 => 개행문자 제거하기. input()과 마찬가지로 str로 저장되므로 ..
cd #change directory cd .. #상위 폴더, 부모 폴더로 이동 cd [폴더명] #하위 폴더, 자식 폴더로 이동 cd \ #루트 폴더, 최상위 폴더로 한 번에 이동 [드라이브명]: #드라이브 간 이동 ex) d: cd 명령어 : 대소문자 구별 x 드라이브명 : 대소문자 구별 x
CRUD => DB 내의 데이터를 Create 생성하다 | Read 읽다 | Update 수정하다 | Delete 삭제하다 Read 웹페이지 상에서 데이터를 읽어야 하므로 띄워줄 HTML 파일 필요 => blog 앱 내에 templates/home.html views.py from django.shortcuts import render from .models import Blog # Create your views here. def home(request): blogs = Blog.objects.all() #Blog 객체를 모두 가져온다. -> Blog 테이블의 모든 row를 가져온다. return render(request, 'home.html', {'blogs' : blogs}) blogs 라는 변수..
models.py from django.db import models # Create your models here. class Blog(models.Model): title = models.CharField(max_length=200) writer = models.CharField(max_length=10) pub_date = models.DateTimeField() body = models.TextField() 1. django의 DB로부터 models라는 모듈을 import (기본 세팅되어있음) 2. 클래스명은 항상 대문자로 시작. models.Model => 위에서 import한 models라는 모듈 안에 있는 Model이라는 클래스를 상속. 3. 필드타입 및 필드옵션은 외울 필요 x, 그때그때 ..
$ python -m venv [가상환경명] #가상환경 생성 $ source [가상환경명]/Scripts/activate (window) $ source [가상환경명]/bin/activate (Mac) #가상환경 실행 $ pip install django #장고 설치 $ django-admin startproject [프로젝트명] #새로운 프로젝트 생성 (pycharm pro 버전 사용하면 그냥 django project로 생성하면 됨. 가상환경, templates 폴더 자동으로 생성) $ python manage.py startapp [app이름] #새로운 앱 생성 => settings.py INSTALLED_APPS에 [app 이름] 추가 #프로젝트에 앱 연결 views.py 함수 작성 urls.py..