[패스트캠퍼스 수강 후기] 파이썬 인강 100% 환급 챌린지 17 회차 미션

2020. 11. 18. 22:10Coding/Python-Fastcampus

728x90

02. 설정 - 03. Admin 구성

fcuser의 admin.py

1
2
3
4
5
6
7
8
9
from django.contrib import admin
from .models import Fcuser
 
# Register your models here.
 
class FcuserAdmin(admin.ModelAdmin) :
    list_display = ('email',)
 
admin.site.register(Fcuser, FcuserAdmin)
cs

 

order의 admin.py

1
2
3
4
5
6
7
8
9
from django.contrib import admin
from .models import Order
 
# Register your models here.
 
class OrderAdmin(admin.ModelAdmin) :
    list_display = ('fcuser''product')
 
admin.site.register(Order, OrderAdmin)
cs

 

product의 admin.py

1
2
3
4
5
6
7
8
9
from django.contrib import admin
from .models import Product
 
# Register your models here.
 
class ProductAdmin(admin.ModelAdmin) :
    list_display = ('name','price')
 
admin.site.register(Product, ProductAdmin)
cs

 

 


Super 계정 생성.

>python manage.py createsuperuser
>아이디
>메일
>비번
>re비번

 


서버 실행.

>python manage.py runserver

 


admin 접속.

 

 


[주문 목록] 추가기능 개선.

회원이나 상품은 크게 문제 없지만 주문 목록은 회원목록과 상품목록을 가져오기 떄문에 이런 문제가 발생.

 

fcuser의 models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.db import models
 
# Create your models here.
class Fcuser(models.Model) :
    email = models.EmailField(verbose_name="이메일")
    password = models.CharField(max_length=64, verbose_name="비밀번호")
    register_date = models.DateTimeField(auto_now_add=True, verbose_name="가입일")
 
    
    def __str__(self) :
        return self.email
 
    class Meta:
        db_table = 'fastcampus_fcuser'
        verbose_name = '회원'
        verbose_name_plural = '회원 목록'
cs

 

order의 models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from django.db import models
 
# Create your models here.
class Order(models.Model) :
    fcuser = models.ForeignKey('fcuser.Fcuser', on_delete=models.CASCADE, verbose_name='주문자')
    product = models.ForeignKey('product.Product', on_delete=models.CASCADE, verbose_name='상품')
    quantity = models.IntegerField(verbose_name="수량")
    register_date = models.DateTimeField(auto_now_add=True, verbose_name="주문일")
 
    def __str__(self):
        return str(self.fcuser) + ' ' + str(self.product)
 
    class Meta:
        db_table = 'fastcampus_order'
        verbose_name = '주문'
        verbose_name_plural = '주문 목록'
cs

 

product의 models.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from django.db import models
 
# Create your models here.
class Product(models.Model) :
    name = models.CharField(max_length=256, verbose_name="상품명")
    price = models.IntegerField(verbose_name="상품가격")
    description = models.TextField(verbose_name="상품설명")
    stuck = models.IntegerField(verbose_name="재고")
    register_date = models.DateTimeField(auto_now_add=True, verbose_name="등록일")
 
    
    def __str__(self) :
        return self.name
 
    class Meta:
        db_table = 'fastcampus_product'
        verbose_name = '상품'
        verbose_name_plural = '상품 목록'
cs

 

def __str__(self) : 기능을 통해서 name이나 email등으로 돌려준다.

 

 

 

 


03. View - 01. Class-based View란

docs.djangoproject.com/ko/3.1/topics/class-based-views/generic-display/

 

내장된(Built-in) 클래스 기반의 제너릭 뷰 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

강의에 보여지는 Django의 공식 문서.

코드의 재사용이나, 프레임워크의 편리함 정도가 언급되고,

실제로 써봐야 뭐가 어떻게 좋은지 알기 쉬울듯.

 

 


05. 흐름 제어 - 05. 반복문(3)

for를 중지 시키는 break.

다른 언어와 똑같다. for문을 돌리다가 특정 조건이 되면 for문을 빠져나오게 할 수 있다.

 

for - else문.

1
2
3
4
5
6
7
8
9
10
numbers = [1434710241723315343638]
 
for num in numbers:
    if num == 33:  # 45
        print("found : 33!")
        break
    else:
        print("not found : ", num)
else:
    print("Not Found 39...")
cs

for문이 정상적으로 끝까지 수행된 경우 else가 실행된다.

break에 걸려서 for문이 중간에 끝나야 else가 실행되지 않는다.

다른 언어에서는 Flag값 줘서 처리한거 같은데, 이건 좀 신박한듯.

 

 

for에서 동작을 무시하고 넘어가는 continue.

1~10까지를 for문으로 돌리면서 print()를 할때, 3의 배수를 제외하고 출력을 하고 싶은 경우.

3의 배수인 3,6,9를 제외하고 1,2,4,5,7,8,10를 출력하고 싶은 경우에 사용한다.

 

 

 

 

 

 

올인원 패키지 : 파이썬 웹 개발👉https://bit.ly/33a7nvc

 

728x90