목록전체 글 (275)
컴굥일지
[Mixin 소개 및 Commentapp 구현] CreateView는 object가 없고, DetailView는 form이 없다. DetailView를 사용하고 싶은데 form과 같이 사용하고 싶다면 Mixin을 사용한다. Comment create, delete만 구현한다. 댓글 추가/삭제 이후, 다시 그 게시글로 되돌아가도록 한다. Comment app 생성 터미널에 python manage.py startapp commentapp을 입력하여 앱 생성 settings.py파일에 가서 INSTALLED_APPS에 가서 ‘commentapp’ 추가 pragmatic/urls.py에 가서 아래 코드를 작성하여 프로필 페이지로 연결해주는 경로를 생성 path('comments/', includ..
[MagicGrid 소개 및 Articleapp 시작] magicgrid: https://github.com/e-oj/Magic-Grid Lorem Picsum: https://picsum.photos/ Article app 생성 터미널에 python manage.py startapp articleapp을 입력하여 앱 생성 settings.py파일에 가서 INSTALLED_APPS에 가서 ‘articleapp’ 추가 pragmatic/urls.py에 가서 아래 코드를 작성하여 프로필 페이지로 연결해주는 경로를 생성 path('articles/', include('articleapp.urls')), articleapp파일로 가서 urls.py 만들고, app_name 설정한다...
[Profileapp 시작 그리고 ModelForm] Profile Account 객체와 1:1로 매칭된다. delete, detail 기능은 만들지 않는다. Account 객체가 탈퇴하면 자동으로 사라지게 된다. Profile app 생성 터미널에 python manage.py startapp profileapp을 입력하여 앱 생성 settings.py파일에 가서 INSTALLED_APPS에 가서 ‘profileapp’ 추가 pragmatic/urls.py에 가서 아래 코드를 작성하여 프로필 페이지로 연결해주는 경로를 생성 path('profiles/', include('profileapp.urls')), profileapp파일로 가서 urls.py 만들고, app_name..
[Authentication 인증시스템 구축 with Decorator] Decorator를 쓰지 않고 인증시스템을 구축하면 중복되는 코드가 많아진다. Decorator는 함수의 내용을 고치지는 않지만, 앞뒤로 붙어서 꾸며준다.(중복 제거 가능) 그냥 함수에는 @login_required라고 쓰면 되지만, 메서드(class안의 함수)에는 적용할 수 없다. @method_decorator :일반 함수에 사용하는 decorator를 메서드에 사용할 수 있도록 변환해준다. @method_decorator(login_required, ‘get’) 이런 식으로 사용한다. 커스텀 decorators.py 만들기 #accountapp/decorators.py from django.contrib.auth.models ..
문제 https://www.acmicpc.net/problem/1541 문제 내용 입력받은 식에 괄호를 적절히 쳐서, 식의 값을 최소로 만들면 된다. 식에는 0~9까지의 숫자, +, - 만이 올 수 있고, 시작과 끝은 반드시 숫자이다. 문제 풀이 식의 값을 최소로 만드는 것이 핵심이다. 그렇기 때문에 - 가 입력되면 그 뒤를 모두 뺄셈 처리하면 된다. ex-1) 55 - 50 + 45 => 55 - ( 50 + 45 ) = - 40 ex-2) 55 - 50 + 45 - 30 + 20 => 55 - ( 50 + 45 ) - ( 30 + 20 ) = -90 ex-2에서 알 수 있다시피, 처음으로 나오는 - 뒤의 숫자를 전부 빼주면 된다. 코드 #include #include using namespace st..
문제 https://www.acmicpc.net/problem/10162 문제 내용 전자레인지 버튼을 최소한으로 눌러서 시간을 맞추어야 한다. 시간의 단위는 A버튼 300초, B버튼 60초, C버튼 10초이다. A, B, C 버튼으로 시간을 정확히 맞출 수 없다면 -1을 출력한다. 문제 풀이 버튼의 시간이 서로 배수관계에 있으므로 greedy 문제이다. 일단 10으로 나누었을 때, 나머지가 발생한다면 -1을 출력하고 프로그램을 끝낸다. 그렇지 않으면 300초, 60초, 10초를 차례로 나눠가며 계산하면 된다. 코드 #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //입력 int ..
문제 https://www.acmicpc.net/problem/5585 문제 내용 물건을 사고 1000엔 지폐를 낸다. 잔돈은 500엔, 100엔, 50엔, 5엔, 1엔이 준비되어있다. 거스름돈을 최소 개수로 받는다고 할 때, 잔돈의 개수를 구하면 된다. 문제 풀이 잔돈이 서로 배수관계에 있으므로 greedy 문제이다. 잔돈이 큰 것부터 먼저 계산하면 된다. 코드 #include using namespace std; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //입력 int num,result=0; cin >> num; num = 1000 - num; //문제 해결 result += num / 500; num %= 500; r..
[DetailView를 이용한 개인 페이지 구현] #accountapp/views.py # CreateView는 뭔가 만들어야 하니까 form이나 성공했을때 경로 등 정해줘야 하지만, # DetailView(reading)는 훨씬 더 간단하다 class AccountDetailView(DetailView): model = User # 어떤 모델을 사용할 것인지 template_name = 'accountapp/detail.html' # 어떻게 시각화할 것인지 {% extends 'base.html' %} {% load bootstrap4 %} {% block content %} {{ user.date_joined }} {{ user.username }} {% endblock ..
[Login / Logout 구현] login / logout도 django에서 제공하는 template으로 할 수 있다. login / logout은 지정할 것들이 별로 없어, 바로 urls.py에서 할 수 있다 #accountapp/urls.py #로그인은 로그인을 하는 창이 필요하기 때문에 template_name을 설정해준다. path('login/', LoginView.as_view(template_name='accountapp/login.html'), name='login'), path('logout/', LogoutView.as_view(), name='logout'), {% extends 'base.html' %} {% block content %} Login {% csrf_token %}..
[Class Based View, 장고의 CRUD] 장고는 CRUD 사용에 최적화 되어있다. (class 제공한다.) function based 보다 class based가 더 좋다. CRUD를 사용하면 생산성이 높아지고, 가독성도 좋아지며, 복잡성이 낮아지고, 시간도 적게 소모된다. [CreateView를 통한 회원가입 구현] 중요 파라미터를 적어주어야 한다. ( model, form_class, success_url, template_name ) #accountapp/views.py class AccountCreateView(CreateView): # 어떤 모델을 사용할 것이다. #User - 장고에서 기본 제공해주는 모델 model = User # User 모델을 만들기 위해 사용할 form이 필요..