小编and*_*win的帖子

通配符或星号(*)vs命名或选择性导入es6 javascript

只是想知道哪一个是使用导入的最佳方式:

import * as Foo from './foo';

VS:

import { bar, bar2, bar3 } from './foo';

例如,在效率方面,我使用webpack来捆绑所有JavaScript文件.即使我没有在主代码中使用它们,第一个实际上会导入所有内容吗?

我能找到的一些参考文献是:

Airbnb风格指南中,他们建议不要使用通配符,因此总会有默认的导入对象,而这一点.

javascript import wildcard ecmascript-6 es6-modules

29
推荐指数
4
解决办法
2万
查看次数

Pyinstaller Jinja2 TemplateNotFound

我正在使用pyinstaller构建我的烧瓶应用程序,一切正常,除了我遇到Jinja2模板的问题.

它给了我jinja2.exceptions.TemplateNotFound,

我试图把from app import template哪个是模板文件夹,但它不起作用(我猜因为它们不包含任何py文件).

我也尝试更改.spec文件以包含该templates文件夹

added_files = [
         ( '..\\CommerceApp\\app\\templates', 'templates' ),
         ( '..\\CommerceApp\\app\\static', 'static' )
        ]

a = Analysis(['..\\CommerceApp\\run.py'],
             pathex=['D:\\PythonProjects\\CommerceAppExe'],
             binaries=None,
             datas=added_files,
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
Run Code Online (Sandbox Code Playgroud)

但它也不起作用,就像我自己手动复制文件夹一样.

有没有办法包含与.exe捆绑在一起的模板?


编辑

这是我的spec档案

# -*- mode: python -*-

block_cipher = None

a = Analysis(['..\\CommerceApp_withPyInstaller\\run.py'],
             pathex=['D:\\PythonProjects\\CommerceAppExe'],
             binaries=None,
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts, …
Run Code Online (Sandbox Code Playgroud)

python templates pyinstaller jinja2 flask

8
推荐指数
1
解决办法
3271
查看次数

我可以在__init__ wtforms中添加字段吗?

由于某种原因,我需要在里面声明一个字段,__init__()所以我可以制作任意类型的FormField.

举个例子form.py:

class PurchaseForm(Form):
    item_class = ItemForm
    transaction_items = FieldList(FormField(item_class),
                                  label='items',
                                  min_entries=1)

    def __init__(self, item_class, *args, **kwargs):
       super().__init__(*args, **kwargs)
       self.item_class = item_class
       self.transaction_items = FieldList(FormField(self.item_class),
                                           label='items',
                                           min_entries=1)
Run Code Online (Sandbox Code Playgroud)

如果我这样做,该transaction_items字段不会被替换__init__(),我可以做一些事情来覆盖它吗?或者setattr为这个特定的例子做些什么?


编辑:这是我如何指定构造函数

import form

@app.route('/add/purchase-transaction', methods=['GET', 'POST'])
def add_purchase_transaction():
    form = forms.PurchaseForm(form.ItemForm)

    if form.validate_on_submit():
        # do something

    return render_template('add-purchase-transaction.html', form=form)
Run Code Online (Sandbox Code Playgroud)

所以我的目标是做一个PurchaseForm具有FieldList包含ItemForm窗体类,并在将来,我可以换ItemForm到不同的类,例如PurchaseItemForm

python wtforms flask-wtforms

7
推荐指数
1
解决办法
2767
查看次数