1

私のdjangoサイトには、fubar.com / signupのようなページがあります。このページは、自分自身に投稿し、成功すると(誰かがサイトにサインアップしたときなど)、fubar.com/thank-youにリダイレクトします。ユーザーがページに戻った場合にページが何度も再読み込みされないようにするルールを適用したいと思います。私はコンバージョンを追跡するためにページを使用していますが、人々が戻るボタンを押してそのページに戻ることができる(そしてそうする)ので、私の数字はオフになっています。

HttpRequest.METAからHTTP_REFERER属性をチェックすることを検討しましたが、それがどれほど信頼できるかはわかりません(異なるクライアントで異なる形式になっている可能性がある場合、またはまったく提供されていない場合)。

これを行うための標準的な方法はありますか?HTTP_REFERER属性は信頼できますか?

4

2 に答える 2

1

考えられる解決策は、ユーザーのセッションに値を格納することです。
ページごとに個別のビューがあると仮定すると、かなり簡単なはずです。

サインアップが成功した後(リダイレクトする前)に、サインアップビューでセッション変数を設定します。

request.session['conversion'] = True

次に、ありがとうページのコンテキストに値を追加します。

return direct_to_template(request, template_name, {
    'conversion': request.session.pop('conversion', False),
})

次に、コンバージョントラッキングコードをテンプレートのifステートメントでラップするだけです。

{% if conversion %}
    {# Conversion tracking script #}
{% endif %}

これはリファラーをチェックするよりも信頼性が高いと思います。

于 2012-08-06T10:47:25.030 に答える
1

チェックHTTP_REFERERはかなり信頼できます。ビューでリファラーを確認してください。

data = {
    'foo': 'bar',
    ...
}
if request.META.get('HTTP_REFERER', False) == reverse('signup'):
    data.update({'conversion': True})
render(request, 'thanks.html', data)

次に、テンプレートでその情報を使用して、コンバージョンを検出するかどうかを決定します。

{% if conversion %}<script type='text/javascript'> // record conversion</script>{% endif %}

Yuriの答えはより一般的に正しいですが(ユーザーが妥当な時間枠内にサンキューページにアクセスする限り、各コンバージョンが少なくとも1回記録されることを保証するため)、毎回セッションストレージにヒットすることになります。 。いずれか、または両方を使用してください;)

于 2012-08-06T14:43:06.987 に答える