Djangoの参考書も読んだが、それだけでは実際のシステムを作り上げる際にいろいろな壁にぶつかってしまう。結局、ネットで情報を仕入れたり、工夫しながらやっていくしかない。最近、いくつかきづいたことをまとめてみた。
・メール送信は、必ずしもサードパーティがいいとも限らない。2,3試したがどれも、自分の環境ではうまくいかず、結局、Djangoの基本機能を利用してうまくいった。(フォームメールなども含めて、そのほうがいいようだ)前回の投稿参照のこと
・画像ファイルのアップロードも、圧縮したい。これは、stdimageためしたが、うまくいかない。Djangoのクラスをうまく継承している、imagekitをためしてようやくうまくいった。
Imageモデルを作成して、それをViewの中で通常の使い方ができる。くせがない感じだ。
image=Image.objects.all().filter(taken_by=profile_id).first()のように
マッチングサイトの足あと機能は、こんな感じでmap活用してなんとかクリア
class FootprintListView(LoginRequiredMixin,ListView):
template_name="accounts/footprint_list.html"
paginate_by=4
def get_queryset(self): #なぜか、これを入れないとエラー、このへんが
return uquery(self,"" ) #まだ 勉強不足
def get_context_data(self):
context = super().get_context_data()
flist = Footprint.objects.filter(looked=self.request.user)
#object_list=uquery(self,"" )
iobList=map( lambda ob: {'usr':ob.look
,'img':Image.objects.all().filter(taken_by=ob.look.id).first()
,'footprintThanksSend':Footprint.objects.all().filter(look=ob.look,looked=self.request.user ).first()
} ,flist)
context['iobject_list']=iobList
context['cuser']=self.request.user
context['count']=len(list(iobList))
return context
template_name="accounts/footprint_list.html"
paginate_by=4
def get_queryset(self): #なぜか、これを入れないとエラー、このへんが
return uquery(self,"" ) #まだ 勉強不足
def get_context_data(self):
context = super().get_context_data()
flist = Footprint.objects.filter(looked=self.request.user)
#object_list=uquery(self,"" )
iobList=map( lambda ob: {'usr':ob.look
,'img':Image.objects.all().filter(taken_by=ob.look.id).first()
,'footprintThanksSend':Footprint.objects.all().filter(look=ob.look,looked=self.request.user ).first()
} ,flist)
context['iobject_list']=iobList
context['cuser']=self.request.user
context['count']=len(list(iobList))
return context
・「足あとありがとう」(自分のプロファイル見てくれてありがとう)の機能は、意外と基本的なところで、つまづく。①~③のところは、どうということのないところだが、これを思いつくまでだいぶ時間がかかった。画面のフォームを通して、値を入れていくコード例はたくさんあるが、このように、直接値を入れることは少ないので。
@api_view(['GET'])
@permission_classes([IsAuthenticated])
def footprint_thanks(request,profile_id):
if request.method == 'GET':
thanks_from = request.user.id # miraretahito
thanks_to=User.objects.filter(id=profile_id)[0] #gazo mitahito
obj=Footprint.objects.filter(look=thanks_to).first() ①
obj.thanks=True ②
obj.save() ③
return render(request, 'accounts/footprint_thanks.html', {'thanks_to':obj.look})
@permission_classes([IsAuthenticated])
def footprint_thanks(request,profile_id):
if request.method == 'GET':
thanks_from = request.user.id # miraretahito
thanks_to=User.objects.filter(id=profile_id)[0] #gazo mitahito
obj=Footprint.objects.filter(look=thanks_to).first() ①
obj.thanks=True ②
obj.save() ③
return render(request, 'accounts/footprint_thanks.html', {'thanks_to':obj.look})
0 件のコメント:
コメントを投稿