0

我需要帮助将这个包实现到这个django 项目中

查看页面源代码时,我看到应用程序的 HTML 是从渲染标签加载的。但在实际页面上,我没有看到这些渲染标签输出的任何 HTML。

有人可以总结一步一步的说明来让这个包工作吗?提供的说明有时可能会令人困惑。

我没有执行以下操作,并且不确定如何执行这些部分:

1)在 divio.com 或通过 pypi 安装插件(宁愿不安装它,因为它似乎要花钱 - 除非有免费使用它的方法)

2)更新您的模板/django_privacy_mgmt 以反映您的前端工具链情况(不确定在我的项目中放置这些文件的位置。

3)然后检查您的网站正在使用什么样的跟踪项目(在模板中或通过谷歌标签管理器或以任何可以想象的其他方式)并将它们添加到 Django 管理界面的“Django Privacy Mgmt”部分到列表中“跟踪项目”。这是必要的,以便我们可以在“隐私设置”模式中向用户显示跟踪项目列表。

4) 然后实现条件逻辑,启用或禁用您在上一步中识别的跟踪项目(参见下一章)。

以下是我遵循的步骤:

pip3 install django-privacy-mgmt
pip3 install django-parler
pip3 install django-sekizai
python3 manage.py migrate

​TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
        'sekizai.context_processors.sekizai',
            ],
        },
    },
]
​
SITE_ID = 1
INSTALLED_APPS = [
    'django.contrib.sites',
    'sekizai',
    'django_privacy_mgmt',
    'parler',
]

{% load privacy %}
<!DOCTYPE html>
<html lang="en">
<head>
{% load static %}
{% render_privacy_api %}
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>

<body>

{% render_privacy_banner %}
{% render_privacy_settings_modal %}
{% render_privacy_settings_modal_link %}

</body>
4

1 回答 1

0

两周前我刚开始使用 django,偶然发现了 django-privacy-mgmt 包。我也想在我的项目中使用它,但一开始遇到了一些麻烦。这就是为什么我想我可以在这里帮助你。我查看了您的项目,对其进行了检查并成功集成了该软件包。

我做了以下步骤:

  1. 使用 pip 安装包pip install django-privacy-mgmt
  2. 像您一样添加已安装的应用程序
INSTALLED_APPS = [
...
    'django.contrib.sites',
    'sekizai',
    'django_privacy_mgmt',
    'parler',
...
]
  1. 以及django.contrib.messages.context_processors.messages上下文处理器

  2. base.html在 ./courses/templates 中添加了隐私定义

{% load privacy %}
{% load sekizai_tags %}
<!DOCTYPE html>
<html>
<head>
    <title>Django Video Membership</title>
    {% render_privacy_api %}
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" ...
    {% render_block 'css' %}
</head>
<body>

    {% include 'courses/messages.html' %}

    <div class="container">
        <ol class='breadcrumb'>
            <li><a href="{% url 'memberships:profile' %}">Profile</a></li>

            {% block post_detail_link %}
            {% endblock %}

            {% if not request.user.is_authenticated %}
            <li class='pull-right'><a href='/register'>Register</a></li>
            <li class='pull-right'><a href='/login'>Login</a></li>
            {% else %}
            <li class='pull-right'><a href='/memberships'>Memberships</a></li>
            {% endif %}
            {% render_privacy_settings_modal_link %}
        </ol>
    </div>

    {% block content %}
    {% endblock content %}

    <script
    src="https://code.jquery.com/jquery-3.3.1.js" ...
    <!-- Latest compiled and minified JavaScript -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" ...
    {% render_privacy_banner %}
    {% render_privacy_settings_modal %}
    {% render_block "js" %}
</body>
</html>
  1. python manage.py migration

  2. python manage.py runserver并使用任何用户登录将在导航中显示链接,如果您单击它,则会出现弹出窗口

说明:

第一步,我们安装包。不需要安装django-parlerdjango-sekizai,它们是 的依赖 ,django-privacy-mgmt会被 pip 自动安装 包安装成功后,我们可以使用你的 base.html 文件中的标签,该文件位于 ./courses/templates /课程/base.html。首先,我们包括load privacy为了能够使用 django-privacy-mgmt 包中的标签。之后,我们load sekizai_tags。这在文档中没有描述,但是有必要添加render_block'js' 和 'css' 的标签,这些标签被包用来将 javascript 和 css 添加到你的 base.html。包的创建者计划在将来删除它,请看这里。你需要把 render_privacy_settings_modal_link在您想为用户显示链接的地方,页脚可能是最好的地方。我把它放在你的导航里。我将render_privacy_api,render_privacy_bannerrender_privacy_settings_modal根据文档添加到您的base.html. 请注意,横幅是可选的。在第 5 步中,我迁移 SQL 脚本,这将创建创建 TrackingItem 所需的表。启动本地服务器并使用任何用户登录后,您应该能够在导航中看到“隐私设置”链接。

1) 在 divio.com 或通过 pypi 安装插件

我没有使用它。如此处所述使用 pip 进行安装

2) 更新您的模板/django_privacy_mgmt 以反映

包的创建者的意思是你可以覆盖他的模板。他有模板,这些是您在应用程序中包含的渲染标签。我需要在我的项目中这样做,因为我使用 Django 3 并且不再支持静态文件。您无需担心,在您的项目中一切正常,但如果您想更改横幅、链接或弹出窗口的布局,则必须覆盖模板。您可以通过django_privacy_mgmt在 ./courses/templates 中创建一个名为的文件夹并使用您在此处找到的名称创建 HTML 文件来做到这一点。从存储库复制内容并根据您的需要进行调整。

3) + 4) 然后检查你的网站使用了什么样的跟踪项目

如果您使用 localhost:8000/admin 登录到管理区域,您应该会看到模型 TrackingItem,您可以在其中为 django-privacy-mgmt 创建项目。为了根据用户的隐私设置排除脚本,您必须按照此处的说明进行操作。正如您在示例中看到的,如果用户拒绝 cookie 设置中的统计信息,它不会加载 googletagamanager。

希望这可以帮助!

于 2020-04-02T10:41:17.607 回答