小编djv*_*jvg的帖子

如何正确确定当前脚本目录?

我想看看在python中确定当前脚本目录的最佳方法是什么?

我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.

这是一些问题:

  • __file__如果脚本执行时未定义exec,execfile
  • __module__ 仅在模块中定义

用例:

  • ./myfile.py
  • python myfile.py
  • ./somedir/myfile.py
  • python somedir/myfile.py
  • execfile('myfile.py') (来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.

我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.

最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().

警告

任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.

python pythonpath dirname

229
推荐指数
8
解决办法
10万
查看次数

按属性过滤

是否可以按模型属性过滤Django查询集?

我的模型中有一个方法:

@property
def myproperty(self):
    [..]
Run Code Online (Sandbox Code Playgroud)

现在我想通过这个属性过滤,如:

MyModel.objects.filter(myproperty=[..])
Run Code Online (Sandbox Code Playgroud)

这有点可能吗?

python django orm

81
推荐指数
5
解决办法
4万
查看次数

URL参数和查询字符串之间有什么区别?

我在URL中看不到参数和查询字符串之间的差别.那么有什么区别,什么时候应该使用?

url url-parameters query-string

64
推荐指数
3
解决办法
14万
查看次数

属性是否适用于django模型字段?

我认为问这个问题的最好方法是使用一些代码......我可以这样做吗?(编辑:答案:不)

class MyModel(models.Model):    
    foo = models.CharField(max_length = 20)    
    bar = models.CharField(max_length = 20)  

    def get_foo(self):  
        if self.bar:  
            return self.bar  
        else:  
            return self.foo  

    def set_foo(self, input):  
        self.foo = input  

    foo = property(get_foo, set_foo)  
Run Code Online (Sandbox Code Playgroud)

或者我必须这样做:

是的,你必须这样做:

class MyModel(models.Model):
    _foo = models.CharField(max_length = 20, db_column='foo')
    bar = models.CharField(max_length = 20)

    def get_foo(self):
        if self.bar:
            return self.bar
        else:
            return self._foo

    def set_foo(self, input):
        self._foo = input

    foo = property(get_foo, set_foo)
Run Code Online (Sandbox Code Playgroud)

注意:通过将db_column传递给模型字段,可以将列名保留为数据库中的'foo'.当您处理现有系统并且不希望无缘无故地进行数据库迁移时,这非常有用

python django model properties

37
推荐指数
3
解决办法
3万
查看次数

使用 JavaScript 单击外部时如何关闭本机 HTML 对话框?

我使用 HTML <dialog>元素。我希望在单击对话框外部时能够关闭对话框。使用“模糊”或“焦点”事件不起作用。

我想要与“材料设计”对话框相同的东西,当您单击对话框外部时,它会关闭对话框:

https://material-components-web.appspot.com/dialog.html

我怎样才能做到这一点?

提前致谢。

html javascript dialog

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

临时表在哪里存储在sql server中?

临时表存储在数据库中的哪个位置?如果临时表已经存在,我想删除它.我可以通过查询信息模式来为安全表执行此操作,但我不知道临时表的存储位置.

sql sql-server-2005 temp-tables

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

如何在多个模块中使用logging.getLogger(__ name__)

从Python 2.7 的logginghowto(我的重点):

命名记录器时,一个好的习惯是在每个使用日志记录的模块中使用模块级记录器,命名如下:

logger = logging.getLogger(__name__)

这意味着记录器名称跟踪包/模块的层次结构,并且从记录器名称中记录事件的地方就很明显了。

听起来像个好建议。

现在,本logging食谱提供了多个模块的示例,这些示例使用硬编码的记录器名称而不是__name__常量。在示例的“主模块”中,我们发现

logger = logging.getLogger('spam_application')

在“辅助模块”中

module_logger = logging.getLogger('spam_application.auxiliary')

我将此示例逐字复制到具有以下结构的package文件夹中:

cookbook-example
|- __init__.py
|- main_module.py
|- auxiliary_module.py
Run Code Online (Sandbox Code Playgroud)

这没有问题,可以从主模块和辅助模块产生预期的日志记录输出,但实际上是这样:

如果现在__name__按照logginghowto的建议,用常数替换硬编码的记录器名称,则菜谱示例将崩溃:我仅从主模块获取记录消息,而从辅助模块中获取不到任何消息。

我一定想念一些明显的东西。有什么想法我做错了吗?

注意:

有很多非常类似的问题和相关的答案,如:123456,等等。但是,这些似乎都没有解决这个具体问题。

- 编辑 -

这是一个基于Cookbook示例的最小示例,显式名称字符串替换为__name__

main_module.py

import logging
import auxiliary_module

# create and configure main logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# create console …
Run Code Online (Sandbox Code Playgroud)

python logging

17
推荐指数
2
解决办法
1万
查看次数

`pip` 等效于 `package.json' 和 `package-lock.json`

包管理器JavaScript喜欢npmyarn使用 apackage.json来指定“顶级”依赖项,并创建一个锁定文件来跟踪作为结果安装的所有包(即顶级子级依赖项)的特定版本。

此外,package.json允许我们区分顶级依赖项的类型,例如productiondevelopment

对于Python,另一方面,我们有pip。我想pip相当于一个lock-file 将是pip freeze > requirements.txt.

但是,如果您只维护这个单个requirements.txt文件,则很难区分顶级和子级依赖项(例如pipdeptree -r,您需要弄清楚这些)。如果您想删除或更改顶级依赖项,这可能会很痛苦,因为很容易留下孤立的包(据我所知,当您创建一个包时,pip 不会删除子依赖项pip uninstall)。

现在,我想知道:是否有一些约定来处理这些requirements文件的不同类型并区分顶级和子级依赖关系pip

例如,我可以想象有 arequirements-prod.txt只包含生产环境的顶级要求,作为 , 的(简化)等价物package.json,而 arequirements-prod.lock包含 , 的输出pip freeze,并充当我的 -lock文件。此外,我可以有一个requirements-dev.txt用于开发的依赖项,等等。

我想知道这是要走的路,还是有更好的方法。

ps 同样的问题可以问conda …

python dependencies pip requirements.txt conda

14
推荐指数
1
解决办法
4398
查看次数

如何使用 django-storages 生成预签名的 S3 url?

我有一个 Django 表单,它通过 django-storages 库将文件保存到 s3 并且工作正常。如何生成并返回预签名 URL,以便用户可以在文件上传后临时访问该文件?这是由 django-storages 抽象的还是我必须使用 boto3 api?

我花了几个小时浏览 Django-storages 文档,但是不太清楚如何做到这一点..

表格.py

class DocumentForm(forms.Form):
    docfile = forms.FileField(
        label='Select a file',
        help_text='max. 42 megabytes'
    )
   name = models.CharField(max_length=20)
   uploaded_at = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

视图.py

def upload_file(request):
   if request.method == 'POST':
      form = DocumentForm(request.POST)
      if form.is_valid():
         form.save()
         url = ... # generate pre-signed url of uploaded file here
         return render(request, 'upload_response.html', url)

Run Code Online (Sandbox Code Playgroud)

python django boto3 python-django-storages

14
推荐指数
1
解决办法
1万
查看次数

基本数据模型模式的 Django 多表继承替代方案

tl;博士

在 Django 中,是否有一个简单的替代多表继承来实现下面描述的基本数据模型模式?

前提

请考虑下图中非常基本的数据模型模式,它基于例如Hay, 1996

简单地说:Organizationsand Personsare Parties,并且Parties都有Addresses 。类似的模式可能适用于许多其他情况。

这里的重点是 与Address具有显式关系Party,而不是与各个子模型Organization和具有显式关系Person

显示基本数据模型的图表

请注意,每个子模型都引入了额外的字段(此处未描述,但请参阅下面的代码示例)。

这个具体的例子有几个明显的缺点,但这不是重点。为便于讨论,假设该模式完美地描述了我们希望实现的目标,因此剩下的唯一问题是如何在 Django 中实现该模式

执行

我相信,最明显的实现将使用多表继承

class Party(models.Model):
    """ Note this is a concrete model, not an abstract one. """
    name = models.CharField(max_length=20)


class Organization(Party):
    """ 
    Note that a one-to-one relation 'party_ptr' is automatically added, 
    and this is used as the primary key (the …
Run Code Online (Sandbox Code Playgroud)

python django inheritance data-modeling single-table-inheritance

12
推荐指数
1
解决办法
1784
查看次数