[1st Project] Brokurly?! ver 0.5-機能定義書&.csv
1.機能定義書
(実際にAPIの実施中に開く、見落とした部分が発見され充填されている)
1)正規表現をモジュール化して原価入力ビューに適用する
:ValidationErrorをキャプチャするためのvalidator.pyの作成
2)実装装飾器
:decoratorを使用して、ログインするページごとにトークンを確認および検証する関数を作成し、コードの読み取りと操作の利便性を向上させます.
3)MainPage APIの実現
:今回企画されたホームページは、製品の簡略情報の羅列形式であり、各製品のイメージも導入される.
2. .csv & uploader.py "uploader.py code 전문"
import os, django, csv, sys
from products.models import *
# system setup
os.chdir('.')
print('Current dir의 경로 : ', end=''), print(os.getcwd())
# os가 파악한 현재 경로를 표기
print('os.path.abspath(__file__)의 경로 : ',os.path.abspath(__file__))
# 현재 작업중인 파일을 포함 경로를 구체적으로 표기
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print('BASE_DIR=', end=''), print(BASE_DIR)
print('똑같나? 다르나?', BASE_DIR == os.getcwd())
sys.path.append(BASE_DIR)
# sys 모듈은 파이썬을 설치할 때 함께 설치되는 라이브러리 모듈이다.
# 이 sys 모듈을 사용하면 파이썬 라이브러리가 설치되어 있는 디렉터리를 확인할 수 있다.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'brokurly.settings')
# python이 실행될 때 DJANGO_SETTINGS_MODULE라는 환경 변수에 현재 프로젝트의
settings.py 파일 경로를 등록
django.setup()
# python manage.py shell 을 실행하는 것이랑 비슷한 방법이다.
즉, 파이썬 파일에서도 django를 실행 시킬수 있다.
menu = './menus.csv'
category = './categories.csv'
product = './products.csv'
image = './images.csv'
# insert data while reading csv file into table
# open csv file and insert row data in MySQL
# Menu Table
def insert_menu():
with open(menu, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
menu_id = Menu.objects.create(
name = row['menu'] )
print('MENU DATA UPLOADED SUCCESSFULY!')
def insert_category():
with open(category, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
menu_id = Menu.objects.get(name=row['menu'])
Category.objects.create( name = row['category'],menu = menu_id)
print('CATEGORY DATA UPLOADED SUCCESSFULY!')
def insert_products():
with open(product, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
category_id = Category.objects.get(name=row['category'])
Product.objects.create(
name = row['name'],
price = row['price'],
introduction = row['introduction'],
description = row['description'],
unit = row['unit'],
shipping = row['shipping'],
package = row['package'],
origin = row['origin'],
weight = row['weight'],
stock = row['stock'],
category = category_id
)
print('PRODUCT DATA UPLOADED SUCCESSFULY!')
def insert_image():
with open(image, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
print(row)
product_id = Product.objects.filter(name=row['name'])
Image.objects.create(url = row['url'],product = product_id[0])
print('CATEGORY DATA UPLOADED SUCCESSFULY!')
insert_menu()
insert_category()
insert_products()
insert_image()
->DBをひっくり返したのは11回くらい.
->イメージテーブルを作成していないことに気づきました.モデル.pyの再記述やgit push後のmergeの取得など、複数のバーストイベントが発生したが、最終的にはスタックデータの入力に成功した.
->もちろん、空き地でコードを書くことができないので、グーグル神の助けで導入した後、3人で一日中顔を合わせて、1行1行のコード解剖ショーを行いました.
->要約すると、Excelファイルに大量のデータを入力し、csv形式で保存し、Pythonを使用してアップロード目的で作成したコードをDBに一括入力します.
->大量のコードは一度に入力されるので、Excelでフォントを生成しないように注意し、アップロードコードを作成するときにも、一致するテーブルとフィールドに正確に配置されているかどうかに注意してください.
->親テーブルを参照するテーブルは、データベースのクラッシュを回避するためにコード構成に接続する必要があります.
Reference
この問題について([1st Project] Brokurly?! ver 0.5-機能定義書&.csv), 我々は、より多くの情報をここで見つけました
https://velog.io/@_ted_0527_/1st-Project-Brokurly-ver-0.5
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
"uploader.py code 전문"
import os, django, csv, sys
from products.models import *
# system setup
os.chdir('.')
print('Current dir의 경로 : ', end=''), print(os.getcwd())
# os가 파악한 현재 경로를 표기
print('os.path.abspath(__file__)의 경로 : ',os.path.abspath(__file__))
# 현재 작업중인 파일을 포함 경로를 구체적으로 표기
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print('BASE_DIR=', end=''), print(BASE_DIR)
print('똑같나? 다르나?', BASE_DIR == os.getcwd())
sys.path.append(BASE_DIR)
# sys 모듈은 파이썬을 설치할 때 함께 설치되는 라이브러리 모듈이다.
# 이 sys 모듈을 사용하면 파이썬 라이브러리가 설치되어 있는 디렉터리를 확인할 수 있다.
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'brokurly.settings')
# python이 실행될 때 DJANGO_SETTINGS_MODULE라는 환경 변수에 현재 프로젝트의
settings.py 파일 경로를 등록
django.setup()
# python manage.py shell 을 실행하는 것이랑 비슷한 방법이다.
즉, 파이썬 파일에서도 django를 실행 시킬수 있다.
menu = './menus.csv'
category = './categories.csv'
product = './products.csv'
image = './images.csv'
# insert data while reading csv file into table
# open csv file and insert row data in MySQL
# Menu Table
def insert_menu():
with open(menu, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
menu_id = Menu.objects.create(
name = row['menu'] )
print('MENU DATA UPLOADED SUCCESSFULY!')
def insert_category():
with open(category, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
menu_id = Menu.objects.get(name=row['menu'])
Category.objects.create( name = row['category'],menu = menu_id)
print('CATEGORY DATA UPLOADED SUCCESSFULY!')
def insert_products():
with open(product, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
category_id = Category.objects.get(name=row['category'])
Product.objects.create(
name = row['name'],
price = row['price'],
introduction = row['introduction'],
description = row['description'],
unit = row['unit'],
shipping = row['shipping'],
package = row['package'],
origin = row['origin'],
weight = row['weight'],
stock = row['stock'],
category = category_id
)
print('PRODUCT DATA UPLOADED SUCCESSFULY!')
def insert_image():
with open(image, newline='', encoding='utf8') as csvfile:
data_reader = csv.DictReader(csvfile)
for row in data_reader:
print(row)
product_id = Product.objects.filter(name=row['name'])
Image.objects.create(url = row['url'],product = product_id[0])
print('CATEGORY DATA UPLOADED SUCCESSFULY!')
insert_menu()
insert_category()
insert_products()
insert_image()
Reference
この問題について([1st Project] Brokurly?! ver 0.5-機能定義書&.csv), 我々は、より多くの情報をここで見つけました https://velog.io/@_ted_0527_/1st-Project-Brokurly-ver-0.5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol