【问题标题】:Django : Customizable templatesDjango:可定制的模板
【发布时间】:2012-09-24 15:57:45
【问题描述】:

我正在创建一个门户网站,我想为用户提供更改配置文件/仪表板的功能,例如更改背景。等等 有人可以指导我采用一种有效的方法来实现这一目标吗? 谢谢

【问题讨论】:

    标签: django templates user-profile


    【解决方案1】:

    这是与 css 和 javascript 相关的技巧,而不是 django 模板。

    这里唯一与 django 相关的是这些首选项的实际存储。

    例如实际背景图像的文件路径。

    之后,您将执行类似于此答案中描述的操作:

    how to change html background dynamically

    编辑

    我不明白为什么每个用户都需要不同的目录。 Django 模板 给你足够的力量去做你想做的事。

    例如,假设每个用户都可以上传自己的背景图片。还 我假设您遵循这个流行的 django 模式来存储附加信息 关于您的用户。 https://docs.djangoproject.com/en/dev/topics/auth/#storing-additional-information-about-users

    所以我们有这个UserProfile 模型:

    class UserProfile(models.Model):
        CHOICES = (
            ('vertical', 'Vertical'),
            ('horizontal', 'Horizontal'),
        )
        user = models.OneToOneField(User)
        background_image = models.ImageField(upload_to='images')
        dashboard_layout  = models.CharField(max_length=10, choices=CHOICES)
    

    您可以将这些额外信息传递给您的 javascript 上下文(使用或不使用 Ajax) 然后为每个用户更改背景图片。

    我们也可以像这样在模板级别进行特殊布局:

    {% extends "base.html" %}
    {% block main_body %}
        {% if request.user.get_profile.dashboard_layout == 'vertical' %}
            {% include "layouts/vertical.html" %}
        {% else %}
            {% include "layouts/horizontal.html" %}
        {% endif %}
    {% endblock main_body %}
    

    【讨论】:

    • 我正在考虑创建差异目录(从默认模板复制)并将它们分配给用户,以便从后端显示用户特定的模板。但这会增加服务器负载并耗尽资源。任何更有效的东西将不胜感激。
    • @TarunGaba 更新了我的答案。我希望它能更清楚地回答你的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-16
    • 2019-08-16
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多