본문 바로가기

전체 글

(148)
[Django] Do it 장고+부트스트랩 13~15주차 정리 댓글 기능부터 배포전까지..드디어 스터디가 끝이 보인다. #13 댓글 기능을 만들었다. 댓글 모델을 만들고, 이번에는 댓글 폼을 이용하여 기능을 구현하였다. #models.py class Comment(models.Model): post=models.ForeignKey(Post, on_delete=models.CASCADE) author=models.ForeignKey(User, on_delete=models.CASCADE) content=models.TextField() created_at=models.DateTimeField(auto_now_add=True) modified_at=models.DateTimeField(auto_now=True) def __str__(self): return f'{sel..
[Django] on_delete=models.SET_NULL에서 주의할 점 django 실습 도중 landing.html에서 문제점을 발견했다. 원래 내가 하려던 기능은 post의 author를 불러오고, 함수를 만들어 author가 상속받은 user의 email에 따라 달라지는 아바타 이미지도 함께 가져와 landing.html에 불러오려 했다. #blog/models.py class Post(models.Model): # 생략 author=models.ForeignKey(User, null=True, on_delete=models.SET_NULL) def get_avatar_url(self): if self.author.socialaccount_set.exists(): return self.author.socialaccount_set.first().get_avatar_url..
[Django] ImportError: cannot import name 'url' from 'django.conf.urls' 오류 django 스터디를 하면서 외부라이브러리 markdownx를 사용하는데 위와 같은 오류가 났다. 전에도 비슷한 오류가 났어서 쉽게 해결할 수 있었다. 위의 site-packages\markdownx\urls.py 로 이동하면 from django.conf.urls import url from .views import ( ImageUploadView, MarkdownifyView, ) urlpatterns = [ url(r'^upload/$', ImageUploadView.as_view(), name='markdownx_upload'), url(r'^markdownify/$', MarkdownifyView.as_view(), name='markdownx_markdownify'), ] 이렇게 적혀 있다. ..
[Django] Do it 장고+부트스트랩 9~12주차 정리 다대일과 다대다 관계를 배우기 시작했다. 원래 알고 있는 개념이긴 하지만...막상 생각하면 어렵다. #09 다대일 관계인 작성자와 카테고리 기능을 추가한다. 장고에서 기본으로 제공하는 User 모델을 외부키로 하여 post에 author 필드를 추가하였다. 또, on_delete=models.CASCADE 조건으로 사용자가 삭제 되면 해당 포스트도 모두 삭제되게 하거나, on_delete=models.SET_NULL조건으로 사용자를 빈 칸으로 두는 두 가지 방법에 대하여 배웠다. 카테고리 필드도 추가하기 위해, Category 모델을 새로 만들었다. #models.py class Category(models.Model): name=models.CharField(max_length=50, unique=Tr..
[Django] Font Awesome 아이콘이 안보이는 오류(fas/fa-solid) django 스터디를 하는 중 10장에서 갑자가 Font Awesome의 아이콘이 안보이는 오류가 발생했다. 도 잘 작성했고, font의 html코드도 맞게 복사했는데 아이콘이 보이지 않았다. 이전에 사용했을 때는 잘 보였는데 갑자기 보이지 않아서 당황했다. 책에 있는 버전을 그대로 치면 잘 나오는데, 지금 사이트의 태그는 적용이 안되는 것이다. 알고보니 Font Awesome이 버전 5로 업데이트 되며 태그 방식이 바뀌었기 때문이다. 버전은 총 5가지가 있다. Regular(far) Light(fal) Douton(fad) Solid(fas) Brands(fab) 아래 두 가지만 무료로 사용할 수 있다. 사이트에서는 책에서는 였는데, 책 버전으로 작성해야 적용이 되었다. 하지만 내 사이트에서는 최신 버..
[Django] Do it 장고+부트스트랩 5~8주차 정리 스터디 2주차 시작!! 5주차부터는 8장부터 시작하는데 본격적으로 웹페이지 개발에 들어간다. #08 8장에서 주목한 부분 중 하나는 blog의 세부 페이지로 들어가는 방법이다. 이전에 세부페이지(detail page)로 들어갈 때는 views.py에 새로운 함수를 정의했는데, 책에서는 모델에다가 함수를 정의하는 방식을 사용한다. 이 방식으로 하면 admin페이지에서도 세부 페이지가 이동가능고, url을 모델에서 정의해서 return 하다니 신기했다. #views.py(이전 방식) def detail(request, blog_id): blog_detail=get_object_or_404(Blog,pk=blog_id) blog_hashtag=blog_detail.hashtag.all() return rend..
[Django] Do it 장고+부트스트랩 1~4주차 정리 겨울방학 동안 django 스터디를 위해 책을 샀다. 완전 초기 세팅부터 깃허브 커밋까지 자세하게 알려줘서 처음 django를 배울 때 편리한 것 같다. 근데 모르고 초기 세팅을 내가 알던대로 했더니...책이랑 달라서 오히려 불편했다. 배포까지 하게되면 아마 세팅을 다시 한 번 정리해야지 싶다.. 더 잘 알게되겠지. #js+bootstrap function whatTimeIsIt(){ alert(new Date()) } 지금 시간을 알려주는 js코드 js는 수업시간에 배웠는데 아직 헷갈린다. 여기서는 간단하게만 배웠지만...간단한 웹사이트는 js를 이용해서만 만들 수 있다는데 신기하다. #blog/models.py from django.db import models class Post(models.Mod..
[Django] django rest-auth패키지를 이용한 유저 기능[2] - login,logout(로그인, 로그아웃) 앞에서 성공적으로 회원가입을 했으면 로그인, 로그아웃 기능은 쉽다. rest-auth가 제공하는 url을 이용하면 편리하게 기능을 이용할 수 있다. 로그인 앞에서 url('rest-auth/', include('rest_auth.urls')), 로 설정을 해주었기 때문에, rest-auth/login 으로 이동하면 login이 가능하다. 이메일은 필수가 아니므로 입력 안해도 된다. 성공적으로 입력이 완료되면 Token과 함께 유저 정보가 return 된다. 로그아웃 rest-auth/logout으로 이동하면 post하면 성공적으로 로그아웃 된다. #urls.py rest-auth가 제공하는 기능은 이것 말고도 다양하다. 닉네임이나 url_value, 비밀번호 등 수정 가능한 put기능도 제공하고 로그인 ..