-1

views.py に問題があります。多くのコードを繰り返しますが、最適化できるかどうか疑問に思っています。

これが私のコードです:

プロフィール:

def profile(request, id):
    if 'person' in request.session:

        me = Users.objects.get(pk=session)

        total_songs = songs.count()
        total_fans = fans.count()
        total_friends = amigos.count()

        total_storage = porcentajeAlmacenamiento(me);
        storage_left = almacenamientoRestante(me);
        notifications = Notification.objects.all().filter(receptor=session, leido=0)
        total_notifications = notifications.count()

        return render_to_response("profile.html", {
            'total_amigos': total_amigos, 
            'total_fans': total_fans,
            'total_songs': total_songs, 
            'me': me,
            'total_storage': total_storage,
            'storage_left': storage_left,
            'notificaciones': notificaciones,
            'total_notifications': total_notifications},context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect('/login/')

家:

def home(request):
    if 'person' in request.session:

        me = Users.objects.get(pk=mi_session)
        songs = Song.objects.filter(autor__in = Friend.objects.filter(usuario=yo).values_list('amigo', flat=True)).order_by('-fecha_subida')
        comments = Comment.objects.all().filter(cancion__in=canciones)

        total_songs = songs.count()
        total_fans = fans.count()
        total_friends = amigos.count()

        total_storage = porcentajeAlmacenamiento(me);
        storage_left = almacenamientoRestante(me);
        notifications = Notification.objects.all().filter(receptor=session, leido=0)
        total_notifications = notifications.count()

        return render_to_response('index.html', {
            'total_friends': total_friends, 
            'total_fans': total_fans,
            'total_songs': total_songs,
            'total_storage': total_storage,
            'storage_left': storage_left,
            'me': me,
            'comments': comments,
            'notifications': notifications,
            'total_notifications': total_notifications,
            'songs': songs}, context_instance = RequestContext(request))
    else:
        return HttpResponseRedirect('/login/')

ご覧のとおり、ほぼすべてのビューで繰り返されるコードの一部があります。

  total_songs = songs.count()
  total_fans = fans.count()
  total_friends = amigos.count()

  total_storage = porcentajeAlmacenamiento(me);
  storage_left = almacenamientoRestante(me);
  notifications = Notification.objects.all().filter(receptor=session, leido=0)
  total_notifications = notifications.count()

それを改善するために私にできることはありますか?

ありがとう

4

1 に答える 1

1

明らかな方法は、辞書を返す関数を作成することです。ビューでは、残りのキーを使用して辞書を作成し、次の行に沿って何かを行うだけです。

general_data = get_general_dict() # the redundant keys
specific_data = {'comments':comments, etc.)
specific_data.update(general_data)
return render_to_response('index.html', specific_data, context_instance = RequestContext(request))
于 2013-05-15T21:21:57.987 に答える