Как я могу заставить Диспетчер тегов Google выполнять код Python и Django? - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь заменить код Google Analytics (GA) на код Google Tag Manager (GTM).Код предназначен для идентификации пользователей с именем пользователя в нашей системе.

В моем текущем коде GA я вызываю файл через Django:

    {{ google_analytics }}

, который вызывает этот код:

    def google_analytics(request):
disabled = {"google_analytics": ""}

# don't track internal users
if request.user and request.user.is_authenticated:
    if request.user.email and request.user.email.lower().endswith('@trellis.law'):
        return disabled

    if request.user.username in lawbook.config.developers:
        return disabled

    if request.user.username in lawbook.config.blog_writers:
        return disabled

    if request.user.username in lawbook.config.bio_writers:
        return disabled

    if request.user.is_staff or request.user.is_superuser:
        return disabled

# don't track in local development environment
if settings.DEBUG:
    return disabled

# don't track in staging
if lawbook.config.hostname.startswith('staging'):
    return disabled

if request.user and request.user.is_authenticated:
    username = request.user.username
else:
    username = None

context = {
    "google_analytics_key": settings.GOOGLE_ANALYTICS_KEY,
    "username": username
}

return {
    'google_analytics': render_to_string("google_analytics.html", context) 
}

Все, что мне нужно сделать, это установить тег, который делает это на каждой странице.Как мне это сделать?

1 Ответ

1 голос
/ 27 апреля 2019

Не уверен, насколько хорошей идеей является публичный обмен вашими ключами, но вот решение django для того, что вы просите.

def google_analytics_context_processor(request):
    # rest of your code
    return {'google_analytics': render_to_string("google_analytics.html", context)}

, а затем в ваших настройках

TEMPLATES = [
    {
        ...,
        'OPTIONS': {
            'context_processors': [
                ...,
                'dot.path.to.google_analytics_context_processor',
            ],
        },
    },
]

и затем в своих представлениях функций (представления, основанные на классах, об этом заботятся автоматически) вы используете

from django.template.context import RequestContext
def view(request):
    custom_context = {'custom': 'context'}
    context = RequestContext(request, custom_context)
    # now where-ever you want, you use this context 
    # and your context from the context_processors added 
    # in your new context 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...