200518-200524_TIL

|

5월 18일 (월)

  • 패스트캠퍼스 남은 장고 강의를 들을까 하다가 일단 보류했다. 설명이 약간 부실한 감이 느껴졌다. 그래서 일단은 django 공식문서에 있는 기본 사용법 파트들을 보았다.

5월 19일 (화)

  • djagno 공식문서 내용들을 다 읽었다. 그중 모델 테스트에 대해서도 있었는데, 이부분은 아직 이해가 잘 안간다. 계속 봐봐야겠다.

5월 20일 (수)

  • 개인적인 일 하느라 PASS
  • 윈도우 컴퓨터에 파이썬 Anaconda를 설치했다. 파이썬 버전에 맞춰 가상환경을 만들어보고 싶었기 때문이다. 사용법을 간단히 봐봐야겠다.

5월 21일 (목)

  • 나만의 웹페이지를 만들기 위한 초석으로 CSS도 공부할 필요를 느꼈고, bootstrap 기초를 익혀보려 한다. 참고 링크

  • ModelForm 사용할 때, 엘리멘트에 속성값을 주고 싶으면 widgets 사용
    class SigninForm(ModelForm): #로그인을 제공하는 class이다.
      class Meta:
          model = User
          widgets = {
              'username': forms.TextInput(attrs={'class': 'form-control', 'id': 'loginID', 'placeholder': '학번을 입력해주세요.'}),
              'password': forms.PasswordInput(attrs={'class': 'form-control', 'id': 'loginPW', 'placeholder': '패스워드를 입력해주세요.'})
          }
          fields = ['username', 'password']
    
  • summernote를 사용하려면 jquery와 bootstrap을 summernote사이트의 버전으로 맞춰주자.

5월 22일 (금)

  • 패스트캠퍼스 장고 AbstractUser 써보는 중인데, 다음과 같은 에러가 뜨면 settings.py에 추가해주자. ``` api.User.groups: (fields.E304) Reverse accessor for ‘User.groups’ clashes with reverse accessor for ‘User.groups’.

    HINT: Add or change a related_name argument to the definition for ‘User.groups’ or ‘User.groups’.

api.User.user_permissions: (fields.E304) Reverse accessor for ‘User.user_permissions’ clashes with reverse accessor for ‘User.user_permissions’.

HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'User.user_permissions'.

User 모델을 커스터마이징 했을 때 발생하는 에러.

settings.py에 다음을 추가해준다.

AUTH_USER_MODEL = ‘{app-name}.{User-model-name}’ AUTH_USER_MODEL = ‘api.User’ ```

5월 23일 (토)

  • 쉬었다.

5월 24일 (일)

  • 패스트캠퍼서 장고 강의를 들었다. 내가 원하는 설명들이 조금씩 생략되어 있어서 아쉬웠지만, 이거는 구글링으로 해결해야겠다. 그래도 좋은 점은 일단은 계속 지식이 쌓여 간다는 것이다.
  • 포트폴리오용 웹 사이트 제작중이다.

Django 실전 정리

|

패스트캠퍼스 Django 실전 정리

트랜잭션

DB에서 사용되는 용어로, 여러 일련의 과정들을 하나의 단위로 통합하는 것이라 보면 된다. 하나라도 실패 시, 롤백되어 무결성을 유지해주는거 같다.

from django.db import transaction

with transaction.atomic():
    내용 작성

쿼리셋

ListView 등을 사용할 때, 쿼리셋을 이용해서 원하는 데이터만 갖고 올 수 있다.

class OrderList(ListView):
    def get_queryset(self, **kwargs):
      queryset = Order.objects.filter(fcuser__email=self.request.session.get('user'))
      return queryset

데코레이터

데코레이터를 활용 url을 통해 클래스뷰들에 접근하면 dispatch메소드가 실행된다고 한다. 이를 method_decorator를 사용하면 클래스에다가 적용할 수 있다.

from django.shortcuts import redirect
from .models import Fcuser

def login_required(function):
    def wrap(request, *args, **kwargs):
        user = request.session.get('user')
        if user is None or not user:
            return redirect('/login/')
        return function(request, *args, **kwargs)
    return wrap

def admin_required(function):
    def wrap(request, *args, **kwargs):
        user = request.session.get('user')
        if user is None or not user:
            return redirect('/login/')
        user = Fcuser.objects.get(email=user)
        if user.level != 'admin':
            return redirect('/')
        return function(request, *args, **kwargs)
    return wrap

#####################################

from django.utils.decorators import method_decorator # 클래스에 데코레이터 할 수 있음
from fcuser.decorators import login_required
@method_decorator(admin_required, name='dispatch')
class ProductCreate(FormView):
    template_name = 'register_product.html'
    form_class = RegisterForm
    success_url = '/product/'

form_valid

유효성이 끝나고 호출되는 함수

200511-200517_TIL

|

5월 11일 (월)

학교 강의 수강

5월 12일 (화)

  • 도서관이 다시 열려서 도서관을 갔다. 패스트캠퍼스 파이썬 심화 강의를 들었다.
    • copy와 deepcopy에 대해 이해했다.
    • 신기했던게, a=(1, 3 [100, 150])같은 형태를 b=list(a)함수로 새로운 객체로 만들었음에도 불구하고 a[2].remove(100)을 하게 되면, b에도 영향이 같다. list 생성자로 만들어도 그 안의 리스트에는 영향을 못주는거 같다. 할거면 deepcopy를 사용해야겠다.

5월 13일 (수)

  • 파이썬 심화과정 클로저, 데코레이터, 클래스에 대해서 강의를 들었다. 예전에도 봤던 개념이지만 아직은 어렵기에 계속 봐야겠다.
  • 코딩도장에서 이터레이터에 대해 봤다. __getitem__을 사용하면 인덱스를 통한 이터레이터를 생성한다고 한다. 문제들을 풀어봤는데 혼자선 아직 못 풀겠고 활용은 못하겠다. 더 봐보자.

5월 14일(목)

  • 패스트캠퍼스 장고를 마저 듣기로 다짐했다. 도서관에서 하다보니 하나의 모니터로는 손이 바뻐지고 어렵다. 강의에서 오버라이딩한 메소드들에 대해 설명이 부족해서 사놓은 책을 읽어봐야겠다.

5월 15일(금)

  • 패스트캠퍼스 Framework Django 실전 강의를 배포빼고 다 들었다. 마지막 부분에 DRF하고 JQuery 부분 실습이 있었는데, 백엔드로 나아갈거면 이 두개를 더 이해해야겠다. 일단 남은 3개의 장고 강의도 다 들어보고, 구매한 책들로도 실습해 봐야겠다.

5월 16일(토) ~ 17일(일)

  • 마지막 중간고사 대체 과제인 피해자학 시험을 치뤘다. 6개의 주관식 문제를 24시간동안 줘서 나름 넉넉했지만, 의외로 오래 걸렸다. 고생한 나에게 맛있는걸 대접해줬다.

200506-200510_TIL

|

5월 6일 (수)

  • 학교형과 하는 크롤링 프로그램에서 항목을 고르는 것이 아닌, 미리 지정한 항목들을 가져와 최저가를 구해서 csv파일로 저장해 보았다. 이후 프로그램으로 만들어서 줬다.
    • 사용한 패키지: pyinstaller
    • 명령어: pyinstaller --onefile "파일명.py"

5월 7일 (목)

  • 일본어 중간고사를 치뤘다. 발음이 좀 부족했는지 평범한 점수를 얻었다.

5월 8일 (금)

  • fastcampus 파이썬 심화 강의를 들었다. named_tuple과 dictionary 심화를 익혀보니, 확실히 더 알면 코드를 더 간결히 할 수 있을거 같다.

5월 9일 (토)

  • 휴식

5월 10일 (일)

  • 학교 중간고사 공부를 했다. 사이버 강의로 돌리니 몰아서 보게 된다..

200427-200505_TIL

|

4월 27일 (월)

  • 실업급여를 받으러 갔다. 아마 마지막 실업급여가 되지 않을까 싶다.
  • 학교 과제를 했다. 지혜와 자비 명작 세미나라 해서 싯다르타라는 책을 읽고 감상문을 쓰는건데, 원체 글을 잘 안쓰니 오래걸리는구만..

4월 28일 (화)

  • 패스트 캠퍼스 장고 강의를 듣는 중이다. 클래스 뷰에 대해서 듣고 있는 중인데, 알아야 할 부분이 더 많아진다. 얼른 나만의 프로젝트도 시작해봐야겠다.

  • 프로젝트를 여러개 만들다 보니 파이썬 가상환경을 많이 사용하는데, 일일히 바꿔주기 번거로워서 autoenv를 추가했다.

  • 일전에 만들던 동국푸드를 다시 살려보기로 했다. git clone을 하고 예전에 했던 세팅대로 해두었다. 하지만, 코드나 내용들을 잊어먹어서 틀은 그대로 하면서 지금 배운것을 다시 사용하는걸로 해야겠다.

4월 29일 (수)

  • 학교 친구들과 간만에 1박2일로 놀러가서 놀았다.

4월 30일 (목)

  • 학교 친구들과 간만에 1박2일로 놀러가서 놀았다.
  • 학교 형과 하는 크롤링 프로그램 피드백을 받아서 일부 수정하기로 하였다.

5월 1일 (금)

  • 개인사

5월 2일 (토)

  • 건대가서 일본어 과제 정리했다.

5월 3일 (일) - 5월5일 (화)

  • 황금 연휴로 여수 여행을 갔다.