小编Kac*_*ski的帖子

如何对使用我的函数的任何内容禁用 pylint 检查?

我制作了一个classproperty描述符,每当我使用用它装饰的函数时,我都会收到多个pylint检查错误。

这是一个带有示例装饰函数的示例类:

class Bar:
    """
    Bar documentation.
    """
    # pylint: disable=no-method-argument

    @classproperty
    def foo():
        """
        Retrieve foo.
        """
        return "foo"
Run Code Online (Sandbox Code Playgroud)

多亏了描述符,我可以调用Bar.foo并获取返回的字符串foo

不幸的是,每当我将这样的函数与稍微复杂的项目(例如返回对象实例的函数)一起使用时,就会pylint开始抱怨诸如no-memberor 之类的东西unexpected-keyword-arg,仅仅是因为它认为Bar.foo是一种方法,而不是包装的classproperty对象。

我想为使用我的函数的任何代码禁用警告- 我绝对不能允许每次使用-wrapped 方法时都必须编写。我该怎么做?或者我应该改用不同的 linter?# pylint: disableclasspropertypylint

以下是由于上述原因生成的警告示例:

class Bar:
    """
    Bar documentation.
    """
    # pylint: disable=no-method-argument

    @classproperty
    def foo():
        """
        Retrieve an object.
        """
        return NotImplementedError("Argument")

print(Bar.foo.args)
Run Code Online (Sandbox Code Playgroud)

pylint抱怨E1101: Method 'foo' …

python pylint

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

如何在自定义视图中启用 django admin 侧边栏导航?

我有一个继承自 的视图,它使用模板作为基础LoginRequiredMixin, TemplateView呈现一些数据。admin/base_site.html我将它视为管理界面的一部分,因此它需要管理员登录。我想通过启用左侧的标准侧边栏导航,使此视图更多地成为 Django 管理界面的一部分。

请注意,我在任何地方都没有自定义ModelAdmin定义,我只是在某个预定义的 URL 处呈现模板。界面中也没有使用模型,它解析并显示来自与数据库无关的源的数据。

目前,我只是手动构建所需的上下文数据,例如:

data = super().get_context_data(**kwargs)
data.update(**{
    "is_popup": False,
    "site_header": None,
    "is_nav_sidebar_enabled": True,
    "has_permission": True,
    "title": "My title",
    "subtitle": None,
    "site_url": None,
    "available_apps": []
})
Run Code Online (Sandbox Code Playgroud)

侧边栏可见,但显示错误消息:

错误消息:您无权查看或编辑任何内容

将应用程序添加到available_apps( "available_apps": ["my_app"]) 也没有帮助:

渲染的侧边栏没有数据

所以我的问题是 - 我该怎么做?我可以继承一个类来实现这种行为吗?或者我可以调用一个方法来获取所有必需的上下文数据base_site.html?或者也许我应该在模板中插入一些信息?也许我需要一个AdminSite对象,或者可以以某种方式调用默认对象的方法?

python django django-admin

6
推荐指数
1
解决办法
2459
查看次数

如何在内存中修剪(裁剪)PDF 文档的底部空白

我正在使用wkhtmltopdf将(Django 模板化)HTML 文档渲染为单页 PDF 文件。我想要么立即以正确的高度渲染它(到目前为止我还没有做到),要么错误地渲染它并修剪它。我正在使用Python。

尝试类型 1:

  • wkhtmltopdf使用以下命令渲染为非常非常长的单页 PDF,其中包含大量额外空间--page-height
  • 用于pdfCropMargins修剪:crop(["-p4", "100", "0", "100", "100", "-a4", "0", "-28", "0", "0", "input.pdf"])

PDF 完美呈现,底部有 28 个单位的边距,但我必须使用文件系统来执行命令crop。该工具似乎需要输入文件和输出文件,并且还会在中途创建临时文件。所以我不能用它。

尝试类型 2:

  • wkhtmltopdf使用默认参数渲染为多页 PDF
  • 使用PyPDF4(或PyPDF2) 读取文件并将页面组合成一个长的单页

在大多数情况下,PDF 都会呈现得很好,但是,如果碰巧最后一个 PDF 页面内容很少,有时会在底部看到大量额外的空白。

理想场景:

理想的场景将涉及一个函数,该函数接受 HTML 并将其呈现为单页 PDF,底部具有预期的空白量。我很乐意使用 渲染 PDF wkhtmltopdf,因为它返回字节,然后处理这些字节以删除任何额外的空白。但我不想让文件系统参与其中,因为我想在内存中执行所有操作。也许我可以以某种方式直接检查 PDF 并手动删除空白,或者执行一些 HTML 魔法来预先确定渲染高度?

我现在在做什么:

注意这pdfkit是一个wkhtmltopdf包装器

# This is not a valid HTML (includes Django-specific stuff)
template: Template = …
Run Code Online (Sandbox Code Playgroud)

html python pdf wkhtmltopdf

5
推荐指数
1
解决办法
2198
查看次数

标签 统计

python ×3

django ×1

django-admin ×1

html ×1

pdf ×1

pylint ×1

wkhtmltopdf ×1