はDjangoのビューからの実際の画像を返すように、それは簡単です(とどのようにこれを行うことでしょうか?)、またはそれだけに簡単です実際の画像が存在するURLにリダイレクトを返しますか?Djangoのピクセルトラッキング
7
A
答えて
6
トラッカーピクセルには実際の画像は必要ありません。実際、あなたが持っていない方が良いです。
ビューをイメージタグのソースとして使用し、空白の応答を返します。
2
Djangoには画像を提供するために使用できるstatic fileヘルパーがありますが、パフォーマンスのために推奨されません。私はピクセルを追跡するために簿記を行うビューを持っていると信じて、serves the actual image via the webserverというURLにリダイレクトすると、最高のパフォーマンスが得られます。
3
これは私のGoogle検索の最初の結果であり、最良の答えはDanielのリンクに埋もれていますが(最高のものとしては言及されていません)、誰も空白を返そうとしないのでマイケルが指摘しているように、レスポンスは理想的ではない。
解決策は、標準ビューを使用して、単一のピクセルgifを構成する生データとともにHttpResponseを返すことです。ディスクやリダイレクトする必要はありませんが、大きな利点です。
URLパターンにはトラッキングコードがイメージ名として使用されるため、URLには明らかな?code = jf8992jfはありません。
from django.conf.urls import patterns, url
from emails.views.pixel import PixelView
urlpatterns = patterns('',
url(r'^/p/(?P<pixel>\w+).gif$', PixelView.as_view(), name='email_pixel'),
)
次に、この図があります。リクエストがワイルドで実行されないようにするには、cache_controlを使用することに注意してください。たとえばFirefoxは(多くの電子メールクライアントと一緒に)何らかの理由で毎回イメージを2回要求しますが、心配する必要はありませんが、心配する必要はありません。 max_age = 60を追加すると、1分間に1つのリクエストが得られます。
from django.views.decorators.cache import cache_control
from django.http.response import HttpResponse
from django.views.generic import View
class PixelView(View):
@cache_control(must_revalidate=True, max_age=60)
def get(self, request, pixel):
"""
Tracking pixel for opening an email
:param request: WSGIRequest
:param pixel: str
:return: HttpResponse
"""
# Do whatever tracking you want here
# Render the pixel
pixel_image = b'\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b'
return HttpResponse(pixel_image, content_type='image/gif')
関連する問題
- 1. JavaScriptのピクセルトラッキングを外部のjsファイルから実行
- 2. PHPでドメイン間でピクセルトラッキングを使用する方法
- 3. DJangoのdjango-paypalモジュール
- 4. Django:フルフェッジFacebookとTwitterの統合(Django-Facebook、django-social-auth、django-allauth)
- 5. DjangoのカスタムフィルタDjango 1.3以下
- 6. Djangoデバッグツールバーのインストール(Django 1.9)
- 7. Django django-admin.pyコマンドの問題
- 8. djangoモデルのmanage.py sqlコマンド - Django
- 9. Django--django-admin.pyが
- 10. Django管理サイトのDjango管理サイトのdjango-nonrelから
- 11. djangoの作成者のDjangoアプリの例
- 12. Django RESTful API - django-pistonとdjango-tastypie
- 13. DjangoとDjango CMSエラー
- 14. DjangoはDjangoテンプレートで
- 15. DjangoテンプレートでDjangoテンプレート
- 16. Django、django-socketio、mongodb backend
- 17. Djangoフォームウィザードとdjango-paypal
- 18. 、Djangoの
- 19. CentOSのDjango django-admin.pyインポート問題(enviroment_variable problem)
- 20. Django Rest Framework/Djangoパフォーマンスの問題
- 21. Django - AWS Elastic BeanstalkのDjango Restエンドポイントにアクセス
- 22. は、Djangoのドキュメントから、Djangoプロジェクト
- 23. django-sortingとdjango-pagination:ミドルウェアの注文
- 24. django-registrationとdjango-profileの使い方は?
- 25. Django RESTフレームワーク+ Django REST Swagger + ImageField
- 26. django-south with django-audit-log
- 27. django-rest-framework + django-polymorphic ModelSerialization
- 28. Django 1.3 staticfiles + django-compressor + CloudFront
- 29. Django contrib.auth.models.User with Django MongoDB Engine
- 30. Django Appのリッチテキスト
コンテンツタイプIは問題で応答しますか? – MattoTodd
はい、おそらくイメージ/ pngにする必要があります。 –
記録のために、空白の応答を送信すると問題が起きる可能性があることに気付きました。少なくともChromeのGmailでは、メッセージに壊れた画像の字形が表示されます。 [Russell Keith-Magee(https://groups.google.com/forum/#!topic/django-users/-xiaSqXdWvc)によって提案されているように]些細なイメージをストリーミングする方が良いでしょう。 –