2017-05-08 2 views
-1

제목에서 말하듯이, 동시에 두 개의보기를 실행하려고합니다. 아니면 적어도, 내가해야한다고 생각합니다. 나는 모델을 좋아하는 사용자를 허용하는 시스템을 가지고 있으며 count와 같은 모델이 3보다 크다면 뷰는 클라이언트에게 전자 메일 메시지를 보내는 뷰로 리디렉션되어야한다. 나는 페이스 북에서 버튼처럼 작동하는 것처럼 "좋아하는"보기와 동일한보기에 전자 메일 메시지 코드를 넣고 싶지 않습니다. 즉, 사용자에게 빠르게 응답해야합니다. 또한 like_exam보기 카운터가 어떤 경우에 완료되고 싶습니다 < 3 또는 아닙니다. 지금 내가 가진 것은 :Django는 동시에 두 개의보기를 실행합니다.

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

동시에 두 개의보기를 실행할 방법이 없습니다. 그리고 이것은 "likes_email"함수가 뷰의 계약의 일부인 사용자에게 응답을 반환하지 않기 때문에 당신이 어쨌든하고 싶은 것이 아닙니다.

시간이 많이 소요되는 작업을 실행하기위한 패턴은 일반적으로 작업 큐를 사용하여 별도의 프로세스로 작업을 전개하는 것입니다. Django에서 이들을 관리하는 가장 좋은 방법은 Celery을 사용하는 것입니다.

관련 문제