小编mic*_*mic的帖子

React 中成熟的 PDF.js 查看器

我希望在Next.js项目的 React 组件中使用功能齐全的PDF.js,如 Firefox 和此在线演示所示。这里的一些重要功能是能够通过键入并在 PDF 中搜索文本来导航到某个页码。是否有可用的 React 组件?

react-pdf非常适合渲染单个页面,但不提供工具栏或在可滚动视图中延迟加载页面的便捷方式。

类似于问题如何在 webpack 和 Vuejs 中使用带有工具栏的完整 PDF.js 查看器?(其中接受的答案提供了一个 Vue 组件)和在 vue.js 中嵌入完整的 Mozilla pdf.js 查看器(通过 vue-cli 使用 webpack),但对于 React.js。

我尝试通过执行以下操作将 /web/viewer.html 作为 React 组件的内部 HTML 的一部分包含在内,但没有成功。

  1. 下载最新版本并将其解压缩到我的 Next.js 项目(我称之为pdfjs)的文件夹部分。我尝试了几个文件夹,例如 /client、/client/components、/pages、/node_modules 和 /。
  2. npm install --save-dev html-loader
  3. 通过更改next.config.js为以下内容,使用解析 HTML 文件的 Webpack 加载器:
module.exports = {
  // …
  webpack: (config, options) => {
    config.module.rules.push({ …
Run Code Online (Sandbox Code Playgroud)

pdf.js reactjs next.js

9
推荐指数
1
解决办法
6269
查看次数

没有 reqparse.RequestParser() 的简单请求解析

flask_restful.reqparse已被弃用(https://flask-restful.readthedocs.io/en/latest/reqparse.html):

Flask-RESTful 的整个请求解析器部分将被删除,并将被有关如何与其他更好地执行输入/输出内容的包(例如marshmallow)集成的文档所取代。这意味着它将一直保持到 2.0,但认为它已被弃用。别担心,如果您现在有使用它的代码并希望继续这样做,它不会很快消失。

我已经简要地看了棉花糖,如果我想替换reqparse.RequestParser(). 我们会写什么而不是像下面这样的东西:

from flask import Flask, request, Response
from flask_restful import reqparse

@app.route('/', methods=['GET'])
def my_api() -> Response:
   parser = reqparse.RequestParser()
   parser.add_argument('username', type=str, required=True)
   args = parser.parse_args()
   return {'message': 'cool'}, 200
Run Code Online (Sandbox Code Playgroud)

(在阅读了更多文档半小时后......)

RequestParserMultiDict request.values默认查看(显然是查询参数,然后根据/sf/answers/1166506351/形成正文参数)。那么我们只需要以request.values某种方式验证数据。

这是来自 Marshmallow 的一些相关代码的片段。似乎比reqparse以下更复杂:首先创建一个模式类,然后实例化它,然后让它加载请求 JSON。我宁愿不必为每个 API 端点编写单独的类。是否有类似于 的更轻量级的东西reqparse,您可以在定义端点的函数中编写所有类型的参数验证信息?

from flask import Flask, request, Response
from flask_restful import reqparse
from marshmallow import (
    Schema,
    fields,
    validate,
    pre_load, …
Run Code Online (Sandbox Code Playgroud)

python flask flask-restful

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

Selenium IDE 停留在“准备运行测试”上

我在 Selenium IDE 中进行了一个测试,看起来像这样。假设我们的基本 URL 是https://stackoverflow.com.

  • 打开/问题
  • 暂停 500
  • 输入id=搜索你好

当我运行测试时,前两个步骤被标记为绿色,但实际上浏览器仍然在 `moz-extension://blahblah/bootstrap.html,显示“准备运行你的测试”。因此,任何依赖实际存在的页面的后续测试都将超时并失败。除了 Selenium 之外,我已经禁用了所有其他扩展,但问题仍然存在。

导致此问题的原因可能是什么?

firefox selenium-ide

5
推荐指数
2
解决办法
2038
查看次数

git 是否有更智能的合并冲突算法?

当变基和 Git 产生合并冲突时,它们有时会非常令人困惑。例如,如果我有这个代码:

async loadDirectory({ commit }, path: string) {
  ...
Run Code Online (Sandbox Code Playgroud)

master我做到了sync

loadDirectory({ commit }, path: string): void {
  ...
Run Code Online (Sandbox Code Playgroud)

some_branch(基于原始代码)中,我在它之前添加了另一个函数:

async fetchData({ commit }) {
  lots();
  of();
  code();
},

async loadDirectory({ commit }, path: string) {
  ...
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试变基some_branchmaster,git 会显示此冲突:

<<<<<<< HEAD
loadDirectory({ commit }, path: string): void {
=======
async fetchData({ commit }) {
  lots();
  of();
  code();
},

async loadDirectory({ commit }, path: string) {
>>>>>>> Add data fetching …
Run Code Online (Sandbox Code Playgroud)

git algorithm diff

4
推荐指数
3
解决办法
422
查看次数

Django根据ForeignKey集中的属性过滤对象

我有看起来像这样的模型:

class Type(models.Model):
    name = models.CharField(max_length=50)
    notes = models.CharField(max_length=50)

class Instance(models.Model):
    type = models.ForeignKey(Type, on_delete=models.CASCADE)
    color = models.CharField(max_length=50)
    quantity = models.PositiveIntegerField()
Run Code Online (Sandbox Code Playgroud)

我想所有的列表Type具有至少一个S Instance,其quantity大于0。我怎样才能表达?

在(伪)香草 Python 中,这将类似于:

[type for type in Type.objects.all()
       if type.instance_set.objects.filter(lambda instance: instance.quantity > 0)]
Run Code Online (Sandbox Code Playgroud)

我试过

available_types = Type.objects.filter(Q(instance_set__contains=Q(quantity__gt=0))
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为 Django 正在寻找quantity的属性Type,当然没有找到它,因为它是Instance.

python django django-models

3
推荐指数
1
解决办法
849
查看次数