首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django -django-privacy mgmt包不显示html

Django -django-privacy mgmt包不显示html
EN

Stack Overflow用户
提问于 2020-01-18 08:54:27
回答 1查看 175关注 0票数 0

我需要在此django project中实现this package的帮助

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

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

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

1)在divio.com上或通过pypi安装插件(我不想安装这个插件,因为它似乎很花钱--除非有办法免费使用它)

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

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

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

以下是我遵循的步骤:

代码语言:javascript
运行
复制
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>
EN

回答 1

Stack Overflow用户

发布于 2020-04-02 18:41:18

我两周前刚开始使用django,偶然发现了django-privacy-mgmt包。我也想在我的项目中使用它,但在开始的时候遇到了一些麻烦。这就是为什么我想我也许能帮到你。我看过你的项目,签出并成功集成了包。

我完成了以下步骤:

与一样,

  1. 使用pip pip install django-privacy-mgmt
  2. Add安装已安装的应用程序包

代码语言:javascript
运行
复制
INSTALLED_APPS = [
...
    'django.contrib.sites',
    'sekizai',
    'django_privacy_mgmt',
    'parler',
...
]

context-processors

  • Added的隐私定义和./courses/templates

base.html的隐私定义

代码语言:javascript
运行
复制
{% 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/courses/base.html。首先,我们包含load privacy以便能够使用django-privacy-mgmt包中的标记。然后,我们load sekizai_tags。文档中没有对此进行描述,但是有必要添加'js‘和' css’的render_block标记,包使用这些标记将javascript和css添加到您的base.html中。该包的创建者计划在将来将其移除,请查看here。您需要将render_privacy_settings_modal_link放在想要为用户显示链接的位置,页脚可能是最好的位置。我把它放到你的导航里了。我根据documentationrender_privacy_apirender_privacy_bannerrender_privacy_settings_modal添加到您的base.html中。请注意,标语是可选的。在第5步中,我迁移了SQL脚本,这将创建创建TrackingItem所需的表。在启动本地服务器并使用任何用户登录后,您应该能够在导航中看到‘privacy-setting’-链接。

1)在divio.com上或通过pypi安装附加组件

我没有用过它。如上所述,使用pip works安装here

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

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

3) + 4)然后检查您的网站正在使用哪种跟踪项目

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

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59796610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档