Westagram-いいですね!
4597 ワード
習慣性がよい
今、このポスターが好きな人を見せて、私のことが好きな人が誰なのか見てみましょう.
モデルを作成するときに、ブランチポイントとしてパブリッシュされるappとlikeを行うapp、およびコメントを担当するappを配布できます.
これは学習の過程で、投稿の上ですべて行います.:)
まず、賛に関するモデルを作成します.models.pyでは次のコードが行われています.
このバーは、ユーザーが直接「いいね」をクリックしない場合、「いいね」ステータスが空になるため、デフォルト値で0が与えられます.
あ0は空Heart 1はいっぱいのHeartを表すために行われています
今はビューpyで「いいね」をクリックするビューを作成します.
そして私がほめたいpostのidと私のuser idを区別します.
そして,いいね1を押してリクエストに送信されると,2つのケースの分岐が生じる.
この投稿で初めて「いいね」をクリックしたときと、以前「いいね」をクリックしてから好きではないとき.
初めて「いいね」を押すと、データを保存するためにlikeテーブルに保存されます.
前にクリックしたレコードがある場合は、行のlike statusステータスを1に変更して保存します.前に「いいね」を解けば、like statusは0になるからです.
なぜゼロなのか、下のifゲートを直接見ればわかります.
requestが0の場合、投稿の好みがキャンセルされます.もしそうなら、すでに存在する投稿には1が格納され、0に変換されるべきです.これらのプロセスを上のコードのように動作させます.
コードにユーザが操作しようとする点賛状態が保存されたオブジェクトをロードするために
では、正常に機能するかどうか見てみましょう.
データベースも良好な状態にあることを確認します.
しかし、賛辞表が実施されると、それに応じた投稿にも賛辞数と賛辞数をクリックする人が現れた.
そこでpostingviewについて以下のように修正しました.
いい仕事はこれで终わります.:)
今、このポスターが好きな人を見せて、私のことが好きな人が誰なのか見てみましょう.
モデルを作成するときに、ブランチポイントとしてパブリッシュされるappとlikeを行うapp、およびコメントを担当するappを配布できます.
これは学習の過程で、投稿の上ですべて行います.:)
まず、賛に関するモデルを作成します.models.pyでは次のコードが行われています.
class Like(models.Model):
like_status = models.IntegerField(default=0)
post = models.ForeignKey('Post', on_delete=models.CASCADE)
user = models.ForeignKey('users.User', on_delete=models.CASCADE)
class Meta:
db_table = 'likes'
この投稿をクリックして賛をクリックしたユーザーに転送して接続し、like statusという賛ステータスバーを作成しました.このバーは、ユーザーが直接「いいね」をクリックしない場合、「いいね」ステータスが空になるため、デフォルト値で0が与えられます.
あ0は空Heart 1はいっぱいのHeartを表すために行われています
今はビューpyで「いいね」をクリックするビューを作成します.
class LikeView(View):
@login_decorator
def post(self, request):
try:
data = json.loads(request.body)
like_status = data['like_status']
post_id = data['post']
user = request.user
post = Post.objects.get(id = post_id)
if like_status == 1 :
if not Like.objects.filter(post = post, user = user).exists():
Like.objects.create(
like_status = like_status,
post = post,
user = user
)
else:
like = Like.objects.filter(post = post, user= user)[0]
like.like_status = 1
like.save()
if like_status == 0 :
if Like.objects.filter(post = post, user = user).exists():
like = Like.objects.filter(post = post, user= user)[0]
like.like_status = 0
like.save()
else:
return JsonResponse({"message" : "INVALID_LIKE"}, status = 400)
return JsonResponse({"message" : "SUCCESS"}, status = 201)
except Post.DoesNotExist:
return JsonResponse({"message" : "INVALID_POST"}, status = 400)
except KeyError:
return JsonResponse({"message" : "KEY_ERROR"}, status = 400)
私はいいねをするために承認が必要な状態なので、解説者を利用して承認してください.そして私がほめたいpostのidと私のuser idを区別します.
そして,いいね1を押してリクエストに送信されると,2つのケースの分岐が生じる.
この投稿で初めて「いいね」をクリックしたときと、以前「いいね」をクリックしてから好きではないとき.
初めて「いいね」を押すと、データを保存するためにlikeテーブルに保存されます.
前にクリックしたレコードがある場合は、行のlike statusステータスを1に変更して保存します.前に「いいね」を解けば、like statusは0になるからです.
なぜゼロなのか、下のifゲートを直接見ればわかります.
requestが0の場合、投稿の好みがキャンセルされます.もしそうなら、すでに存在する投稿には1が格納され、0に変換されるべきです.これらのプロセスを上のコードのように動作させます.
コードにユーザが操作しようとする点賛状態が保存されたオブジェクトをロードするために
Like.objects.filter(post = post, user= user)[0]
のように処理を行い、[0]を指定したのは、その列が無条件に1つしか現れないためであり、filterは[0]をクエリーセットとして返さざるを得ないからである.もし後でもっと合理的なコードがあれば、私は修正します.では、正常に機能するかどうか見てみましょう.
データベースも良好な状態にあることを確認します.
しかし、賛辞表が実施されると、それに応じた投稿にも賛辞数と賛辞数をクリックする人が現れた.
そこでpostingviewについて以下のように修正しました.
@login_decorator
def get(self, request):
posts = Post.objects.all()
results = []
for post in posts:
fix_created_at = post.created_at.strftime("%Y-%m-%d %H")+"시"
likes = post.like_set.all()
like_count = 0
like_user = []
for like in likes:
if like.like_status == 1:
like_count += 1
like_user.append(like.user.email)
results.append(
{
"poster" : post.user.first_name,
"title" : post.posted_title,
"content" : post.posted_content,
"image_url" : post.posted_image.url,
"created_at" : fix_created_at,
"like_count" : like_count,
"like_user" : like_user
}
)
return JsonResponse({"posts" : results}, status = 200)
異なる点はpostの逆参照グループがliketable情報をもたらし,like statusが1である場合のみ計算を行い,そのユーザのemailを中に入れて示すことである.それは下のように出てきます.いい仕事はこれで终わります.:)
Reference
この問題について(Westagram-いいですね!), 我々は、より多くの情報をここで見つけました https://velog.io/@holyja/westagram-좋아요テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol