小编Asa*_*ara的帖子

Python中的TypeHinting元组

当我想在Python中键入一个元组时,如:

def func(var: tuple[int, int]):
    # do something

func((1, 2))    # would be fine
func((1, 2, 3)) # would throw an error
Run Code Online (Sandbox Code Playgroud)

需要提供元组中的确切项目数.这与列表类型提示不同:

def func(var: list[int]):
    # do something

func([1])       # would be fine
func([1, 2])    # would also be fine
func([1, 2, 3]) # would also be fine
Run Code Online (Sandbox Code Playgroud)

在某种程度上,这是因为元组的类型.因为它们的设计不会被更改,所以您必须对其中的项目进行硬编码.

所以我的问题是,有没有办法让元组类型提示中的项目数量变得灵活?我试过类似的东西,但它不起作用:

def func(var: tuple[*int]):
Run Code Online (Sandbox Code Playgroud)

python type-hinting

9
推荐指数
2
解决办法
3385
查看次数

pipenv install --system,但仅适用于用户

我可以用来pip install xx --user为用户安装软件包。使用pipenv时,我可以pipenv install --system用来创建虚拟环境而不是在系统上安装要求,但是如何告诉Pipenv使用pip --user标志并仅为当前用户安装所需的软件包?

另一个问题可能是,如何使用simple pip从Pipfile安装所有要求?

python pip pipenv

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

在 __init__ 中更改时,python 类变量可以成为实例变量吗?

据我了解,这里var是一个类变量

class MyClass:
    var = 'hello'

    def __init__(self):
        print(self.var)
Run Code Online (Sandbox Code Playgroud)

那是一个实例变量

class MyClass:

    def __init__(self, var):
        self.var = var
        print(self.var)
Run Code Online (Sandbox Code Playgroud)

我遇到了问题,我正在寻找一种方法来使实例变量的类型提示成为可能。我当然可以使用类型提示参数,def __init__(self, var: str):但这不会影响实例变量本身。

然后我注意到在一些描述中(如这里),他们使用术语实例变量来表示var这样的:

class MyClass:
    var : str = 'hello'

    def __init__(self, var : str = None):
        self.var = var if var
        print(self.var)
Run Code Online (Sandbox Code Playgroud)

这确实是解决方案,但这仍然是一个实例变量吗?因为它是在类体中定义的,所以在我的理解中它将是一个类变量。如果您要为 var 使用列表,则对该列表变量的所有更改都将通过实例共享。

但在这种情况下不会有问题,因为字符串被替换并且不会被其他实例共享。但是,如果您将其称为实例变量,对我来说似乎是错误的,而我不知道是否应该像这样使用它只是为了让类型提示起作用。

python type-hinting

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

在Symfony3中组织资产

我仍然有一些问题需要在symfony中处理我的资产.在最佳实践说,我应该保存我的资产web/.但我不喜欢在那里存储我的原始sass文件,因为它是一个公共文件夹,我认为只应该存储编译或静态文件.

这就是我存储它们(js和sass)的原因app/Resources.我的assetic.read_fromapp/Resources.但是有一些捆绑,由符号链接assets:installweb/bundles/.

现在,当我想在我的twig文件中包含这个bundle-assets时,我必须../../web/bundles/..在样式表块中去那里.这看起来不是很干净,所以我做了一个符号链接 app/Resources/bundles->web/bundles/,这是有效的.

但我仍然认为它太过小巧,我想知道是否有一种更清洁的方式可以更好地在一个地方收集我的资产.

symfony assetic

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

Symfony不会在bundle中搜索twig文件

我创建了一个新的包,其中应包含twig文件.默认情况下,generate bundle命令行(in src/TestBundle/Resources/views/test.html.twig)已添加了一个twig文件.在IndexAction中还自动添加了render-command:

return $this->render('TestBundle:test.html.twig', $data);

但是当我调用IndexAction时,我得到一个模板未找到错误,并且错误说,symfony只查看

/app/Resources/views, 
/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form
Run Code Online (Sandbox Code Playgroud)

但不是 /src/TestBundle/...

为什么symfony会忽略bundle资源?我怎么能改变呢?

php symfony twig

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

将 Pipenv 与 git 子模块一起使用

我有一个 git 子模块 B,它作为我的 django 项目 A 中的应用程序工作。B 有自己的 Pipfile 和 Pifile.lock。A还有一个Pipfile和Pipfile.lock。如何使用 Pipenv 在同一 virtuaelenv 中的两个 pipfile 中安装库?

python django git-submodules pipenv

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

如何改进 python/django 中的异常处理

这是我在 Django 项目中的异常处理示例:

def boxinfo(request, url: str):
    box = get_box(url)
    try:
        box.connect()
    except requests.exceptions.ConnectionError as e:
        context = {'error_message': 'Could not connect to your box because the host is unknown.'}
        return render(request, 'box/error.html', context)
    except requests.exceptions.RequestException as e:
        context = {'error_message': 'Could not connect to your box because of an unknown error.'}
        return render(request, 'box/error.html', context)
Run Code Online (Sandbox Code Playgroud)
  • 现在只有两个例外,但对于几个请求例外应该更多。但是视图方法已经被这个膨胀了。有没有办法将异常处理转发到单独的错误方法?
  • 还有一个问题,我需要在这里为每个除外调用渲染消息,我想避免这种情况。
  • 在这里我也重复除了“无法连接到你的盒子因为”之外的每一个,当出现任何异常时应该设置一次。

我可以通过这样的方式解决它:

try:
    box.connect()
except Exception as e:
    return error_handling(request, e)
Run Code Online (Sandbox Code Playgroud)

——

def error_handling(request, e):
    if type(e).__name__ == requests.exceptions.ConnectionError.__name__:
        context = {'error_message': …
Run Code Online (Sandbox Code Playgroud)

python django exception

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

我该如何纠正拉取请求?

我对Github上的分叉存储库进行了一些更改,并在pull请求中发送.业主有一些我在当地修复的小问题.我该如何提交这些修补程序?当我只是提交并推送时,拉请求中是否还会有一个"固定"提交?

为了保持清洁,我想重新修改或修改我的最后一次提交并强制推送,但是拉动请求会发生什么呢?它会自动删除还是只是添加(我想要发生什么)?

git github pull-request

4
推荐指数
1
解决办法
779
查看次数

使用python请求登录laravel应用

我想使用python请求登录Laravel应用并获取登录后第一页的内容,我尝试过:

import requests
import re

URL = 'laravelapp.url'

session = requests.session()

front = session.get(URL)
csrf_token = re.findall(r'<input type="hidden" name="_token" value="(.*)"', front.text)[0]

print(csrf_token)
print(session.cookies['XSRF-TOKEN'])

payload = {
    'email': 'email@example.com',
    'password': 'testtest',
    '_token': csrf_token,
}

r = requests.post(URL + '/login', data=payload)

print(r)
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这只会返回 419 错误。那么 csrf 令牌似乎有什么问题吗?但我不明白出了什么问题,cookie 应该由.sessions()我管理,我从登录表单中提取了 csrf 令牌并将其作为参数放入发布数据。那么,缺少什么?

python login laravel python-requests

4
推荐指数
1
解决办法
950
查看次数

搜索在doctrine中具有多个标记的实体

我在Document和Tag之间有很多关系.所以一个Document可以有几个Tags,一个Tag可以分配给不同Document的.

这是 Tag

AppBundle\Entity\Tag:
    type: entity
    table: tags
    repositoryClass: AppBundle\Repository\TagRepository
    manyToMany:
        documents:
          targetEntity: Document
          mappedBy: tags
    id:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
    fields:
        label:
            type: string
            length: 255
            unique: true
Run Code Online (Sandbox Code Playgroud)

Document

AppBundle\Entity\Document:
type: entity
table: documents
repositoryClass: AppBundle\Repository\DocumentRepository

manyToMany:
    tags:
      targetEntity: Tag
      inversedBy: documents
      joinTable:
          name: documents_tags
id:
    id:
        type: integer
        id: true
        generator:
            strategy: AUTO
fields:
    title:
        type: string
        length: 255
Run Code Online (Sandbox Code Playgroud)

现在我想搜索具有标签所有文件animalfiction.我如何用学说实现这一目标?

就像是 …

doctrine symfony

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