Deploying Google Analytics With Django

后端 未结 10 1137
遇见更好的自我
遇见更好的自我 2020-12-23 11:29

We\'re about to deploy a new Django website, and we want to use Google Analytics to keep track of traffic on the site. However, we don\'t want all of the hits on developmen

相关标签:
10条回答
  • 2020-12-23 12:07

    Another simple way. In settings.py,Check debug is True, then add:

    INTERNAL_IPS = (
        '127.0.0.1',
        'localhost',
    )
    

    Then you can use things in your template like this:

    {% if not debug %}
    <script> blah blah </script>
    {% endif %}
    

    If want to change to production, set debug to False.

    Ref: http://www.djangobook.com/en/2.0/chapter09.html

    0 讨论(0)
  • 2020-12-23 12:07

    Hi all it's a quite old post.. But since I spent some time in searching some reusable app that is still actively maintained I want to share what I found:

    https://github.com/jcassee/django-analytical

    This project is still actively maintained and does not require the ID to be added to the database (I think is better if you have one project per site) so it is bared in the code no matter if the environment is development or production.

    0 讨论(0)
  • 2020-12-23 12:09

    Instead of including the script tag directly in your html, just change the analytics javascript so it only runs if the href does not contain your prod site's name. This will work without any extra configuration.

    0 讨论(0)
  • 2020-12-23 12:09

    Here's the dead simple way that I solved it:

    Create an app in your project called 'utils' if you haven't already. See these directions.

    However, follow this approach to include all global context processers in addition to the project settings. It's seems to be a better practice. Here are the instructions.

    So, after you create your 'utils' app, create a a file called context_processors.py in /utils that looks like this:

    from django.conf import settings
    
    def googleanalytics(request):
        return {
            'google_tracking_id' : settings.GOOGLE_TRACKING_ID,
        }
    

    In you settings.py file, add this:

    import django.conf.global_settings as DEFAULT_SETTINGS
    
    TEMPLATE_CONTEXT_PROCESSORS = DEFAULT_SETTINGS.TEMPLATE_CONTEXT_PROCESSORS + (
         'utils.context_processors.googleanalytics',
    

    )

    Hope this helps!

    0 讨论(0)
  • 2020-12-23 12:16

    My solution takes a similar approach to Ned's preferred answer, but separates the analytics code into its own template. I prefer this, so I can just copy the template from project to project.

    Here's a snippet from my context_processor file:

    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': "" }
    

    Of course you'll need to tell Django to include this in your context. In in your settings.py file, include:

    TEMPLATE_CONTEXT_PROCESSORS = (
        ...
        "context_processors.analytics",
    )
    

    I have it set up to include the analytics code only when DEBUG is set to False, but you may prefer to key it off something else, perhaps a new setting altogether. I think DEBUG is a good default since it supposes you don't want to track any hits while debugging/developing.

    Create a setting with your Google Analytics Key:

    GOOGLE_ANALYTICS_KEY = "UA-1234567-8"
    

    Create a template called: "analytics/analytics.html" that includes something like this:

    <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>
    

    Finally, just before the closing tag in your base.html template, add this:

    {{ analytics_code }}
    

    Now your analytics code will be included only when DEBUG=False. Otherwise, nothing will be included.

    0 讨论(0)
  • 2020-12-23 12:17

    A little late to the party, but there's a reusable Django app called django-google-analytics. The easiest way to use it is:

    1. Add the google_analytics application to your INSTALLED_APPS section of your settings.py.
    2. In your base template, usually a base.html, insert this tag at the very top: {% load analytics %}
    3. In the same template, insert the following code right before the closing body tag: {% analytics "UA-xxxxxx-x" %} the UA-xxxxxx-x is a unique Google Analytics code for your domain.
    0 讨论(0)
提交回复
热议问题