展GoogleアナリティクスとDjango
-
08-07-2019 - |
質問
いて、コーポレート-ガバナンスを新Djangoのサイトを利用したいGoogleアナリティクスのイラストに交通のサイトです。しないすべての製品を開発インスタンスに貢献するGoogleアナリティクスの統計で
あなたが本:
- て構成オプションsettings.py の拠点にテンプレートを使うか否かを含め、適切な
<script>
要素 - の維持に支店を引き入を配備する前に、生産のサーバを確保していますの
<script>
要素 - いGoogleアナリティクスをブロックのヒットには127.0.0.1はlocalhost、
- 一カ月もかかりました。
最初のオプションのように、もっと賢くなった場合です。例えば、思いを開始しております通 google_analytics
変数をすべての当社のょうか。
あなたはどう思いますか。
解決
最初に、開発サーバーと運用サーバーが異なるファイル(dev.pyやprod.pyなど)から設定を取得する方法を作成します。これを行う方法はたくさんあります。
次に、設定を作成します、GOOGLE_ANALYTICS_KEY
。 dev.pyで空の文字列に設定します。 prod.pyで、<!> quot; UA-124465-1 <!> quot;のようなキーに設定します。 コンテキストプロセッサを作成しますこの設定をすべてのテンプレートコンテキストに<=>として追加するか、先に進んで設定モジュールを追加します。次に、テンプレートで、それを使用して条件付きで分析コードを含めます。
{% if settings.GOOGLE_ANALYTICS_KEY %}
<script> blah blah {{settings.GOOGLE_ANALYTICS_KEY}} blah blah </script>
{% endif %}
他のヒント
パーティーに少し遅れましたが、 django-google-analytics 。それを使用する最も簡単な方法は次のとおりです。
-
google_analytics
アプリケーションをINSTALLED_APPS
のsettings.py
セクションに追加します。 - ベーステンプレート(通常は
base.html
)で、このタグを最上部に挿入します:{% load analytics %}
- 同じテンプレートで、bodyの終了タグの直前に次のコードを挿入します。
{% analytics "UA-xxxxxx-x" %}
UA-xxxxxx-x
はドメインの一意のGoogleアナリティクスコードです。
私のソリューションは、Nedの優先回答と同様のアプローチを採用していますが、分析コードを独自のテンプレートに分離しています。これが好きなので、プロジェクトからプロジェクトにテンプレートをコピーするだけです。
これは、context_processorファイルの抜粋です:
from django.conf import settings
from django.template.loader import render_to_string
def analytics(request):
"""
Returns analytics code.
"""
if not settings.DEBUG:
return { 'analytics_code': render_to_string("analytics/analytics.html", { 'google_analytics_key: settings.GOOGLE_ANALYTICS_KEY }) }
else:
return { 'analytics_code': "" }
もちろん、これをコンテキストに含めるようDjangoに指示する必要があります。 settings.pyファイルに以下を含めます。
TEMPLATE_CONTEXT_PROCESSORS = (
...
"context_processors.analytics",
)
DEBUGがFalseに設定されている場合にのみ分析コードを含めるように設定しましたが、他の何か、おそらく新しい設定を完全にキーオフすることをお勧めします。デバッグ/開発中にヒットを追跡したくないと想定しているため、DEBUGは適切なデフォルトだと思います。
Googleアナリティクスキーで設定を作成します:
GOOGLE_ANALYTICS_KEY = "UA-1234567-8"
<!> quot; analytics / analytics.html <!> quot;というテンプレートを作成します。これには次のようなものが含まれます:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("{{ google_analytics_key }}");
pageTracker._trackPageview();
} catch(err) {}</script>
最後に、base.htmlテンプレートの終了タグの直前に、これを追加します:
{{ analytics_code }}
分析コードは、DEBUG = Falseの場合にのみ含まれるようになりました。それ以外の場合、何も含まれません。
これらすべての他のソリューションがあり、そのすべてを失わせないアイテムで簡単に設定できるフィルタをGoogleアナリティクスフィルターすべての交通ではないから生産サイトは除きます。見 作成-管理の概要 フィルタのGA。ソリューションのないコードだけでみんなが楽になります。
注意:あ注意
- ことになりませんリアルタイムフィルタリングしないため、フィルタ用リアルタイムについて、2012年確認書類)
- れることができ管理者として、Google Analytics口座設定
別の簡単な方法。
settings.py
<!>#65292; debug
がTrue
であることを確認してから、追加します:
INTERNAL_IPS = (
'127.0.0.1',
'localhost',
)
次に、テンプレートで次のように使用できます:
{% if not debug %}
<script> blah blah </script>
{% endif %}
実稼働環境に変更する場合は、False
を<=>に設定します。
私はほとんどNedに同意しますが、IS_LIVE_SITEと呼ばれる単一の設定があり、分析コード、広告、その他のいくつかを切り替えます。この方法で、すべてのキーをSubversionに保持し(キーを調べるのは面倒なので)、それでも簡単にオンまたはオフに切り替えることができます。
スクリプトタグをHTMLに直接含めるのではなく、分析JavaScriptを変更して、hrefにprodサイトの名前が含まれていない場合にのみ実行されるようにします。これは追加の設定なしで機能します。
すべてのビューを更新せずにすべてのテンプレートに値を渡すために使用できるテンプレートコンテキストプロセッサがあります。
http://docs.djangoproject.com/ en / dev / ref / settings /#template-context-processors
これは私が解決した非常に簡単な方法です:
「utils」という名前のプロジェクトをまだ作成していない場合は、作成します。 これらの指示をご覧ください。
ただし、このアプローチに従って、プロジェクト設定に加えてすべてのグローバルコンテキストプロセッサを含めます。それはより良い習慣のようです。 手順です。
>したがって、「utils」アプリを作成したら、/ utilsに次のようなcontext_processors.pyというファイルを作成します。
from django.conf import settings
def googleanalytics(request):
return {
'google_tracking_id' : settings.GOOGLE_TRACKING_ID,
}
settings.pyファイルに、これを追加します:
import django.conf.global_settings as DEFAULT_SETTINGS
TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
'utils.context_processors.googleanalytics',
)
これがお役に立てば幸いです!
こんにちは。かなり古い投稿です。 しかし、まだアクティブに維持されている再利用可能なアプリの検索に時間を費やしたので、見つけたものを共有したいと思います:
https://github.com/jcassee/django-analytical
このプロジェクトはまだアクティブに維持されており、データベースにIDを追加する必要はありません(サイトごとに1つのプロジェクトがある方が良いと思う)。 。