0

オブジェクトの呼び出しをカウントするにはどうすればよいですか。例: Image アプリがあり、画像が呼び出された頻度をユーザーに表示したいと考えています。YouTube のビデオビューに「いいね!」

4

2 に答える 2

2

カウントをテーブルに保存し、画像を使用するたびにインクリメントする必要があります。

最初に、カウントを格納するフィールドがまだない場合はモデルに追加します。

class MyImageClass(models.Model):
    ...
    views = models.PositiveIntegerField(default=0)

次に、画像データを返し、ビュー カウントをインクリメントするビューを作成する必要があります。

def my_image_view(request, id):
    instance = get_object_or_404(MyImageClass, id=id)

    filename, ext = os.path.splitext(instance.image_field.name)
    ext = ext[1:].lower() # remove period and normalize to lowercase

    instance.views += 1
    instance.save()

    response = HttpResponse(instance.image_field.read(), mimetype='image/%s' % ext)
    response['Content-Disposition'] = 'inline;filename=%s.%s' % (filename, ext)
    return response

ビューを urlpattern にフックし、テンプレートで次のようにイメージを呼び出します。

<img src="{% url my_image_view_name id=my_image.id %}">

確かにそれでいくつかの最適化を行う必要があり、考慮すべきスレッドセーフの問題がありますが、ボールを転がすにはそれで十分です.

于 2012-04-09T16:34:15.710 に答える
1

これを許可する組み込みメソッドはありません。情報をデータベースに保存する必要があります

于 2012-04-09T16:31:01.497 に答える