我想看看在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()
.
任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.
是否可以按模型属性过滤Django查询集?
我的模型中有一个方法:
@property
def myproperty(self):
[..]
Run Code Online (Sandbox Code Playgroud)
现在我想通过这个属性过滤,如:
MyModel.objects.filter(myproperty=[..])
Run Code Online (Sandbox Code Playgroud)
这有点可能吗?
我在URL中看不到参数和查询字符串之间的差别.那么有什么区别,什么时候应该使用?
我认为问这个问题的最好方法是使用一些代码......我可以这样做吗?(编辑:答案:不)
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'.当您处理现有系统并且不希望无缘无故地进行数据库迁移时,这非常有用
我使用 HTML <dialog>元素。我希望在单击对话框外部时能够关闭对话框。使用“模糊”或“焦点”事件不起作用。
我想要与“材料设计”对话框相同的东西,当您单击对话框外部时,它会关闭对话框:
https://material-components-web.appspot.com/dialog.html
我怎样才能做到这一点?
提前致谢。
临时表存储在数据库中的哪个位置?如果临时表已经存在,我想删除它.我可以通过查询信息模式来为安全表执行此操作,但我不知道临时表的存储位置.
从Python 2.7 的logging
howto(我的重点):
命名记录器时,一个好的习惯是在每个使用日志记录的模块中使用模块级记录器,命名如下:
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__
按照logging
howto的建议,用常数替换硬编码的记录器名称,则菜谱示例将崩溃:我仅从主模块获取记录消息,而从辅助模块中获取不到任何消息。
我一定想念一些明显的东西。有什么想法我做错了吗?
注意:
有很多非常类似的问题和相关的答案,如:1,2,3,4,5,6,等等。但是,这些似乎都没有解决这个具体问题。
- 编辑 -
这是一个基于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) 包管理器JavaScript
喜欢npm
和yarn
使用 apackage.json
来指定“顶级”依赖项,并创建一个锁定文件来跟踪作为结果安装的所有包(即顶级和子级依赖项)的特定版本。
此外,package.json
允许我们区分顶级依赖项的类型,例如production和development。
对于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 …
我有一个 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) 在 Django 中,是否有一个简单的替代多表继承来实现下面描述的基本数据模型模式?
请考虑下图中非常基本的数据模型模式,它基于例如Hay, 1996。
简单地说:Organizations
and Persons
are Parties
,并且Parties
都有Address
es 。类似的模式可能适用于许多其他情况。
这里的重点是 与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
python ×7
django ×4
boto3 ×1
conda ×1
dependencies ×1
dialog ×1
dirname ×1
html ×1
inheritance ×1
javascript ×1
logging ×1
model ×1
orm ×1
pip ×1
properties ×1
pythonpath ×1
query-string ×1
sql ×1
temp-tables ×1
url ×1