일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- programmers
- BFS
- 프로그래머스
- 모각코
- 동적계획법
- 마라마라빔
- django
- B대면노래방
- 최소스패닝트리
- Planned
- 백트래킹
- 실습
- Kruskal
- MyPlaylist
- codetree
- 데이터베이스
- DP
- 소프트웨어공학
- 백준
- SQL
- 알고리즘
- 파이썬
- Bellman-Ford
- 종합설계
- 그리디알고리즘
- minimum spanning tree
- 함밥
- DFS
- 장고
- 코드트리
- Today
- Total
목록Django (21)
Leta Learns
게시물에 작성자 연결. 작성자(user)는 여러 게시물(Blog)을 작성 가능. 게시물은 1명의 작성자에게만 연결될 수 있음. 1(작성자) : N(게시물) 관계 blog/models.py (-> 작성자-게시물 연결) from django.db import models from account.models import CustomUser # Create your models here. class Blog(models.Model): user = models.ForeignKey(CustomUser, null=True, on_delete=models.CASCADE) title = models.CharField(max_length=200) writer = models.CharField(max_length=10) p..
Paginaton : 데이터를 페이지 별로 나눠서 보내주는 것. Paginator라는 모듈을 통해 pagination기능 제공 Paginator 사용 이유 UI/UX적인 편리함을 제공하기 위해 서버 부하 줄이기 위해 blog/views.py (-> Paginator) # 이전 import문들.. from django.core.paginator import Paginator def home(request): blogs = Blog.objects.all() #blog 객체를 모두 가져옴 paginator = Paginator(blogs, 3) # blogs를 3개씩 나눔 page = request.GET.get('page') # 해당 정보가 오지 않아도 넘어간다 paginated_blogs = paginat..
쿼리 스트링 : 데이터를 전달하는 데 사용. URL 주소 뒤에 입력 데이터를 함께 제공. request.GET['page'] request.GET.get('page') 두 개의 형태로 해당하는 데이터를 얻을 수 있다. '?'로 시작. '&'를 통해 여러 데이터를 동시에 전달 가능. 이 분 velog보면 좀 더 잘 이해 가능! https://velog.io/@keywookim/We.TIL-30-Django-%EC%BF%BC%EB%A6%AC%EC%8A%A4%ED%8A%B8%EB%A7%81-%EA%B0%84%EB%8B%A8-%EC%82%AC%EC%9A%A9%EB%B2%95 We.TIL 30 : Django 쿼리스트링 간단 사용법 쿼리스트링이란? 쿼리스트링이란 사용자가 웹 프로그램으로 입력한 데이터를 전달하는 ..
account/views.py from django.shortcuts import render, redirect from django.contrib.auth.forms import AuthenticationForm, UserCreationForm from django.contrib import auth def signup_view(request): if request.method == 'POST': form = UserCreationForm(request.POST) if form.is_valid(): user = form.save() auth.login(request, user) return redirect('home') return redirect('account:signup') else: form =..
python manage.py startapp account #account 앱 생성 => account/urls.py 정의, settings.py, modelproject/urls.py 수정 account 폴더 내에 templates 폴더 생성 => signup.html, login.html 생성 (signup, login 페이지 모두 ModelForm 사용) => account/views.py, account/urls.py에 새 html파일들 연결 account/views.py (login 구현) from django.shortcuts import render, redirect from django.contrib.auth.forms import AuthenticationForm from django...
내부에 필요한 input값들을 일일이 추가하여 사용자로부터 필요한 데이터들을 받아왔음. => 장고에서는 Form 기능 제공 (쉽고 빠르게 구현 가능) Form 장점 form 태그 내부에 input 태그들 자동 생성 is_valid() => 유효성 검사 fast forms.py (app 폴더 안에 생성하기) from django import forms from .models import Blog class BlogForm(forms.ModelForm): class Meta: model = Blog fields = ['title', 'writer', 'body', 'image'] => 블로그 모델(model = Blog)의 form 내부에 사용할 필드(컬럼)를 설정한 것. Meta 클래스 : 데이터에 대한 ..
static : 개발자가 준비하는 파일 media : 이용자들이 올리는 파일 settings.py (=> media 설정) MEDIA_ROOT = os.path.join(BASE_DIR, 'media') #이용자가 업로드한 파일을 모아두는 곳 MEDIA_URL = '/media/' urls.py (=> media 설정) from django.contrib import admin from django.urls import path, include # include 작업을 분리해서 앱의 urls.py로 넘겨준다 import blog.views #static, media 관련 내용 import from django.conf import settings from django.conf.urls.static imp..
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값 받..