首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/Flask/Jinja2不适用于Web的材质设计组件

Python/Flask/Jinja2不适用于Web的材质设计组件
EN

Stack Overflow用户
提问于 2018-01-15 23:23:58
回答 1查看 2K关注 0票数 1

我一直在尝试将Python Flask/Flask-Bootstrap/Jinja2 webapp转换为使用Material Design Components for Web,以及应用程序的一部分工作-我正在尝试将webapp的演示尽可能地作为客户端。

我有最新版本的material-components-web.min.jsmaterial-components-web.min.css加载到网页模板中,用于生成所有由Flask提供的页面。

MDC for Web似乎完全依赖于Node.js的使用,我不确定我在上一段中找到并提到的.js和.css文件是否只是随意使用的(这是一个本地Web应用程序,所以大小不是问题),并且没有任何容易编译的.css文件用于所有子组件,只有.sass。

无论如何,尽管一些样式是正确的,但动态功能,如文本字段上的浮动标签,验证等都不起作用,并且许多元素的位置都是错误的。

我确信我漏掉了一些小东西,但是它是什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-16 05:36:36

事实证明,我在web上使用MDC时遗漏的是我的文本字段周围的div组件中的data-mdc-auto-init="MDCTextField“属性。

这些信息可以在https://material.io/components/web/catalog/auto-init/页面上找到,但并不容易找到

因此,对于Flask,我的Jinja HTML模板中的表单生成代码是:

代码语言:javascript
复制
{% if field.errors %}
    {% set css_class = 'has_error ' + kwargs.pop('class', '') %}
    <div class="mdc-text-field">
             {{ field(class=css_class, **kwargs) }}
             {{ field.label(class="mdc-text-field__label") }} 
             <div class="mdc-text-field__bottom-line"></div>
             <ul class="errors">{% for error in field.errors %}<li>{{ error|e }}</li>{% endfor %}</ul>
    </div>
{% else %}
    <div class="mdc-text-field">    
            {{ field(**kwargs) }}
            {{ field.label(class="mdc-text-field__label") }}
            <div class="mdc-text-field__bottom-line"></div>
    </div>
{% endif %}

它应该是:

代码语言:javascript
复制
{% if field.errors %}
    {% set css_class = 'has_error ' + kwargs.pop('class', '') %}
    <div class="mdc-text-field" data-mdc-auto-init="MDCTextField">
             {{ field(class=css_class, **kwargs) }}
             {{ field.label(class="mdc-text-field__label") }} 
             <div class="mdc-text-field__bottom-line"></div>
             <ul class="errors">{% for error in field.errors %}<li>{{ error|e }}</li>{% endfor %}</ul>
    </div>
{% else %}
    <div class="mdc-text-field" data-mdc-auto-init="MDCTextField">  
            {{ field(**kwargs) }}
            {{ field.label(class="mdc-text-field__label") }}
            <div class="mdc-text-field__bottom-line"></div>
    </div>
{% endif %}

我花了大约两天的时间才解决了一个非常简单的问题,所以我希望我能为你们中的一些人省去同样的工作。

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

https://stackoverflow.com/questions/48265902

复制
相关文章

相似问题

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