Westagram #4
投稿の登録と公開
posting app
以前に行われた会員登録とログインプログラムではuserというアプリケーションを生成して使用した.しかしdjango氏によると、主に処理するデータの種類が異なる場合、アプリケーションが分離されるという.
投稿は、ユーザーのデータとは異なる性質のデータであるため、アプリケーションを分離します.
投稿モデルの作成
from django.db import models
from user.models import Account
class Post(models.Model):
user = models.ForeignKey(Account, on_delete=models.CASCADE, null=True)
created_at = models.TimeField(auto_now_add = True, null=True)
content = models.TextField()
image_url = models.URLField()
class Meta:
db_table = 'posts'
Foreign Keyを使用して、ユーザーとサービス参加者を連絡します.user
appのmodels
ファイルからAccount
クラスをインポートします.
登録投稿のプレイヤーuser
、
投稿登録時間created_at
.
記事content
image_url
プロパティが生成され、パブリッシュする画像のurlアドレスが含まれます.
ForeignKeyを使用してAccount
クラスに接続し、on_delete=models.CASCADE
を使用して、外部キーが表示されている値を削除するときに、外部キーを含むモデルインスタンス(行)を削除します.
投稿ビューの作成
postメソッドを使用して投稿を登録する
class PostView(View):
def post(self, request):
data = json.loads(request.body)
try:
if Account.objects.filter(email = data['email']).exists():
# 요청받은 이메일주소가 존재하는지 확인
user = Account.objects.get(email = data['email'])
# 존재한다면 해당 이메일 주소(계정)를 가진 사용자 할당
Post(
user = user, # user 속성으로 요청받은 사용자의 정보가 연결
content = data['content'],
image_url = data['image_url'],
).save()
return JsonResponse({'MESSAGE': 'SUCCESS'}, status=200)
return JsonResponse({'MESSAGE': 'INVALID_USER'}, status=401)
except Exception as e:
return JsonResponse({'MESSAGE' : f'NO {e}'}, status = 400)
投稿のパブリッシュ-getメソッドの使用
def get(self, request):
post_list = list(Post.objects.values()) # 등록된 모든 게시물을 불러온다.
return JsonResponse({'post_list': post_list}, status=200)
user
アプリケーションのAccount
import忘れないでください
urlの作成
from django.db import models
from user.models import Account
class Post(models.Model):
user = models.ForeignKey(Account, on_delete=models.CASCADE, null=True)
created_at = models.TimeField(auto_now_add = True, null=True)
content = models.TextField()
image_url = models.URLField()
class Meta:
db_table = 'posts'
class PostView(View):
def post(self, request):
data = json.loads(request.body)
try:
if Account.objects.filter(email = data['email']).exists():
# 요청받은 이메일주소가 존재하는지 확인
user = Account.objects.get(email = data['email'])
# 존재한다면 해당 이메일 주소(계정)를 가진 사용자 할당
Post(
user = user, # user 속성으로 요청받은 사용자의 정보가 연결
content = data['content'],
image_url = data['image_url'],
).save()
return JsonResponse({'MESSAGE': 'SUCCESS'}, status=200)
return JsonResponse({'MESSAGE': 'INVALID_USER'}, status=401)
except Exception as e:
return JsonResponse({'MESSAGE' : f'NO {e}'}, status = 400)
def get(self, request):
post_list = list(Post.objects.values()) # 등록된 모든 게시물을 불러온다.
return JsonResponse({'post_list': post_list}, status=200)
投稿の登録と読み込み
게시물 등록
>>> http POST 127.0.0.1:8000/posting email='[email protected]' content='고양 이' image_url='https://topclass.chosun.com/news_img/1807/1807_008_1.jpg'
게시물 표출
>>> http GET 127.0.0.1:8000/posting
投稿をロードすると、以下の方法で投稿に関する情報を表示できます.user_id
は、ユーザが投稿を登録する際に入力する電子メールアドレスの固有id値である.Reference
この問題について(Westagram #4), 我々は、より多くの情報をここで見つけました https://velog.io/@rin0702/Westagram-4テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol