Django 12

[Django] 장고 Login, Logout(로그인, 로그아웃) - 인스타 클론코딩

📍 Login, Logout(로그인, 로그아웃) 회원가입을 했으니 로그인을 해보자. ✅ Login(로그인) 기능 구현📌 # accounts/forms.pyfrom django.contrib.auth.forms import AuthenticationFormclass CustomAuthenticationForm(AuthenticationForm): pass 📌 # accounts/views.pyfrom django.contrib.auth import login as auth_logindef login(request): if request.method == 'POST': form = CustomAuthenticationForm(request, request.POST) ..

Django/INSTA 2024.03.24

[Django] 장고 Signup(회원가입) - 인스타 클론코딩

📍 Signup(회원가입)CRUD 기능을 마무리하고 오늘부터는 user와 관련된 기능을 추가해보려 한다.  [Django] 장고 User모델링 - 인스타 클론코딩 [Django] 장고 User모델링 - 인스타 클론코딩📍 User 모델링 회원가입, 로그인, 로그아웃 기능을 추가하기 전 User모델링을 해주자! [Django] 장고 모델링 - 인스타 클론코딩 [Django] 장고 모델링 - 인스타 클론코딩 📍 모델링 ✅ 모델 정의 ImageFiheejudeveloper.tistory.com우선 저번에 모델링해뒀던 User에서 인스타처럼 프로필사진도 추가할 수 있게 모델링을 바꿔주었다. ✅ 모델링 수정📌 # accounts/models.pyfrom django_resized import Resized..

Django/INSTA 2024.03.19

[Django] 장고 User모델링 - 인스타 클론코딩

📍 User 모델링회원가입, 로그인, 로그아웃 기능을 추가하기 전 User모델링을 해주자! [Django] 장고 모델링 - 인스타 클론코딩 [Django] 장고 모델링 - 인스타 클론코딩📍 모델링 ✅ 모델 정의 ImageField를 사용하기 위해 pillow 설치가 필요하다. pip install pillow content : post에 들어갈 내용(인스타 글을 작성할 때 title은 없기 때문에 생략) created_at : post를 생성한 시간 aheejudeveloper.tistory.com모델링하는 방법은 유사하지만 User 모델링할 때는 AbstractUser을 사용하면 편하다.  📌 # models.pyfrom django.contrib.auth.models import Abstrac..

Django/INSTA 2024.03.17

[Django] 장고 CRUD기능 중 UPDATE - 인스타 클론코딩

📍 CRUD - UPDATE오늘은 update 기능을 추가해보자.  📌 # _card.html 작성자 DELETE UPDATEdelete와 같이 링크를 이용해 update버튼을 추가해주고 update url을 연결해주었다.  📌 # views.pydef update(request, id): post = Post.objects.get(id=id) if request.method == 'POST': form = PostForm(request.POST, instance=post) if form.is_valid(): form.save() return redirect('posts:index') else: ..

Django/INSTA 2024.03.16

[Django] 장고 CRUD기능 중 DELETE - 인스타 클론코딩

📍 CRUD - DELETEDELETE버튼을 만들어 DELETE 기능을 구현해보자.  📌 # _card.html 작성자 DELETE '작성자'만 들어가있었는데 링크로 DELETE 버튼을 추가했다.class에 btn 적용하고 오른쪽 정렬, 작성자와 높이조절정도 해주었다.  📌 # views.pydef delete(request, id): post = Post.objects.get(id=id) post.delete() return redirect('posts:index')post마다 id가 부여되어있는데 아무 post나 지우면 안되기 때문에 id를 지정하여 삭제되게끔 해야 한다.삭제된 후에는 index페이지로 redirect되게 설정  📌 # urls.pypath('/del..

Django/INSTA 2024.03.15

[Django] 장고 CRUD기능 중 CREATE - 인스타 클론코딩

📍 CRUD - CREATE CREATE기능을 구현하기 전 CREATE버튼은 Navbar에 추가하기로 했다.(정리하면서 Home 링크도 추가함!) 📌 # _nav.html Home Create  📌 기능 구현에 들어가기 전더보기아래와 같이 input, textarea를 직접 지정한 form형태보단 장고의 forms를 이용해서 CREATE 기능을 구현해보려 한다.# new.html / create.html title content  📌  # forms.pyfrom django import formsfrom .models import Postclass PostForm(forms.ModelForm): class Meta: model = Pos..

Django/INSTA 2024.01.21

[Django] 장고 부트스트랩 Grid - 인스타 클론코딩

📍 부트스트랩 Grid현재 나의 index페이지는 1줄에 card 1개씩 페이지가 꽉차게 나오는 상황이다.(여백없이 사진만 덩그러니 페이지를 꽉 채우니 부담스럽다..) 부트스트랩의 그리드를 적용해 1줄에 card가 2개씩 나오도록 설정해보려 한다.(실제 인스타는 1개씩 나오지만 사이드를 채울만한 기능을 추가할 계획이 없기 때문에 나는 2개씩 채우려 한다.) https://getbootstrap.kr/docs/5.0/layout/grid/ 그리드 시스템강력한 모바일 우선 flexbox 그리드를 사용하여 12개의 열 시스템, 6개의 기본 반응형 계층, Sass 변수 및 믹스인, 수십 개의 사전 정의된 클래스 덕분에 모든 모양과 크기의 레이아웃을 빌드할 수 있getbootstrap.kr 부트스트랩 공식홈페이..

Django/INSTA 2024.01.19

[Django] 장고 부트스트랩 Navbar 추가 - 인스타 클론코딩

📍 Navbar 추가Navbar가 있으면 여러모로 편리하기 때문에 페이지 상단에 Navbar를 추가해주려한다. bootstrap을 이용할 것이기 때문에 base.html에 CDN방식을 적용하여 앞으로 생성할 html들에 쉽게 bootstrap을 적용시켜보자.base.html을 생성하기 전 base.html을 저장할 project 최상단에 'templates' 폴더를 생성하고 settings.py를 설정해주었다.DIRS를 설정해주어야 엔진이 base templates를 찾을 수 있다.TEMPLATES = [ { "DIRS": [BASE_DIR / 'templates'], },] templates 폴더에는 기본 템플릿인 base.html, _nav.html를 추가해주고base.htm..

Django/INSTA 2024.01.19

[Django] 장고 Image 크기, 비율 조절(Resized) - 인스타 클론코딩

📍Image 크기, 비율 조절(Resized)resize 기능을 위해서 django-resized를 설치한다.pip install django-resized 모델링해뒀던 ImageField 대신 ResizedImageField로 수정했다.기존 사진의 비율을 유지할 수 없을 때 crop을 이용하여 사진을 어떤식으로 자를지 설정해줄 수 있다.from django_resized import ResizedImageFieldclass Post(models.Model): content = models.TextField() create_at = models.DateTimeField(auto_now_add=True) update_at = models.DateTimeField(auto_now=True)..

Django/INSTA 2024.01.19

[Django] 장고 CRUD기능 중 READ - 인스타 클론코딩

📍 CRUD - READ image같은 media file은 저장할 위치, url을 처리해줘야 한다. 📌 # settings.py# 업로드한 사진을 저장할 위치MEDIA_ROOT = BASE_DIR / 'media'# 미디어 경로를 처리할 URLMEDIA_URL = '/media/'  📌 # INSTA - urls.pyfrom django.urls import includefrom django.conf import settingsfrom django.conf.urls.static import staticurlpatterns = [ path('posts/', include('posts.urls')),] + static(settings.MEDIA_URL, document_root=settings...

Django/INSTA 2024.01.19