サブプロジェクト実施の詳細
Git Repository
このプロジェクトのGit Repository
1.ココア会員登録
FrontEnd
がKACAからのタグを送信すると、ココア豆に設定されたURLにタグが戻されます.送信トークンがKACAユーザ情報を受信し、
get_or_create
を介して会員DBに存在するユーザが新規登録とともにログインすると、トークンが取得されます.
既存のユーザーの日は、ログイン後にトークンのみが発行されます.
詳細なインプリメンテーションの代わりに、作成した対応する記事リンクを使用します。
2.icotainsを使用した検索機能
Redibooksのホームページを検索すると、下の図のように大文字と小文字を区別せずにデータが照会されます.
Django
でクエリーフィルタを使用する場合は、contains
およびicontains
を使用します.icontains
は、大文字と小文字を区別しないフィルタリングに使用される.検索の内容は
keyword
のQuery Parameter
で、本と作者の名前の中にkeyword
が含まれているかどうかicontains
を用いて濾過を行った.検索内容を含む本や著者がいなければ、データは一切なく、これらのデータも反映されます.
keyword = request.GET.get('keyword')
...
for author in Author.objects.filter(name__icontains=keyword)
for book in Book.objects.filter(main_name__icontains=keyword)
3.get or createを使用してコードを簡略化する
以前は、コードを記述する際に、既存のデータを照会し、
Model.objects
にアクセスして検証を継続する必要があった場合があります.以下に示します.次に、最初に作成したコードを示します.
#로그인 유저가 특정 작가를 구독한 상황에서 구독을 한 번 더 눌렀다면(구독 취소했다면)
if Subscribe.objects.filter(author_id=author_id, user_id=request.user.id).exists() :
Subscribe.objects.filter(author_id=author_id, user_id=request.user.id).delete()
return jsonresponse({'message':'해당 작가 구독 취소 완료'}, status=201)
#DB에 구독한 기록이 없으면 생성
Subscribe.objects.create(author_id=author_id, user_id = request.user.id)
return jsonresponse({'message':'해당 작가 구독 추가 완료'}, status=201)
しかしながら、get_or_create
により、同じアクセス回数でもコードが簡略化される.get_or_create
は、アクセス時に生成され、存在しない場合はクエリーされ、それに応じてステータスが返されます.データが存在する場合、
get
であればFalse
を返し、存在しない場合はcreate
を返す.したがって、コードはステータスに応じて追加/削除できます.
subscribe, state = Subscribe.objects.get_or_create(
author_id = author_id,
user_id = request.user.id
)
if not state :
subscribe.delete()
return JsonResponse({'message' : 'delete success'}, status=201)
4.fakerライブラリを使用したデータの作成
最初のプロジェクトでは、csvファイルを使用してデータを作成します.
次に、
True
ライブラリを使用して、2回目の実行時に大量のランダムデータを生成します.import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", 'ridibooksl.settings')
django.setup()
from faker import Faker
from datetime import date, datetime, timedelta
from users.models import User
from products.models import Book, Rating, ViewCount
from django.db import transaction
fake = Faker()
with transaction.atomic() :
Rating.objects.bulk_create([Rating(book_id=1, user_id=1,
rating=fake.pyint(min_value=1, max_value=5)) for _ in range(30)])
まず、
faker
を介してオペレーティングシステムに登録されている環境変数にアクセスする.名称は
os.environ.setdefault
で、登録DJANGO.SETTINGS.MODULE
を示す.そして
ridibooksl.settings
で、データINSERTの基本設定を完了します.django.setup()
ライブラリはfaker
コマンドでインストール、使用の準備をする.
次いで、
pip install faker
およびfrom faker import Faker
クラスが変数import
に代入される.スコアデータの生成を例に挙げます.
異なるモデルでデータを作成するために、
Faker
を設定しました.fake
ライブラリのtransaction
メソッドを使用して、最小値と最大値が1~5の間のスコアデータを生成します.間の値をランダムに生成できます.
Reference
この問題について(サブプロジェクト実施の詳細), 我々は、より多くの情報をここで見つけました https://velog.io/@kyleee/2차-프로젝트-구현-상세-내용テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol