2017-05-08 13 views
-1

タイトルが言うように、私は同時に2つのビューを実行しようとしています。少なくとも、それは私がやらなければならないと思うことです。私はモデルのようなユーザーを可能にするシステムを持っていて、カウントのようなモデルが3より大きければ、ビューはクライアントに電子メールメッセージを送るビューにリダイレクトされるべきです。私はfacebookのボタンのように同じように動作するので、 "好きな"ビューと同じビューに電子メールメッセージコードを置いてはいけません。ユーザーに速やかに応答する必要があります。また、カウンター< 3かどうか私はlike_examビューがどのような場合でも終了したい。だから私は今いる:Djangoは同時に2つのビューを実行します

def like_exam(request, letnik_id, classes_id, subject_id): 
    exam_id = request.GET.get('exam') 
    exam = get_object_or_404(Exam, id=exam_id) 
    counter = exam.exam_likes.count() 
    user = request.user 
    if user in exam.exam_likes.all(): 
     exam.exam_likes.remove(user) 
     return JsonResponse({"like": "unliked"}) 
    else: 
     exam.exam_likes.add(user) 
     if counter < 3: 
      html = likes_email(exam) 
      return HttpResponse(html) 
     # i want the json to be posted in any case: 
     return JsonResponse({"like": "liked"}) 

def likes_email(exam): 
    ....sends email... 

答えて

3

同時に2つのビューを実行する方法はありません。とにかくやりたいことではありません。 "likes_email"関数は、ビューのコントラクトの一部であるユーザーへの応答を返しません。

時間のかかる操作を実行するパターンは、通常はタスクキューを使用して別のプロセスに展開することです。 Djangoでこれらを管理する最善の方法はCeleryです。

関連する問題