您可以在最后一个/
字符之后获取值:
const pokemonID = foo.substring(foo.lastIndexOf("/") + 1)
使用 string.lastindexof 获取slash字符的最终索引,然后使用 string.substring 只有一个参数可以在最后一个/字符。我们将1添加到LastIndexof,以省略最终斜线。
为此,您需要从请求URL中放下最终的拖延斜线(无论如何都不会做任何事情)。
这可以将其抽象成实用程序函数,以获取任何URL的最后值,这是使用拆分和通过索引方法查找的最大改进。
但是,要当心,它将采用最后一个斜线之后的价值。
使用字符串 https://pokeapi.co/api/v2/pokemon/6/pokedex
将返回 pokedex
。
如果您与内置路由器一起使用Angular,React,Vue等,则该框架的特定API可以获取所需的确切参数,无论URL形状如何。
不要与 ID
一起工作。而不是将 id
作为参数传递给 insertcolumn
,而是传递表元素本身。您可以通过从沿
节点上沿DOM树来找到哪个表是当前的表格:
onclick="insertColumn(this.closest(table))"
在所有HTML表中重复此功能。
然后在中insertcolumn
适应并将分配删除到 table
,因为 table
现在将是参数名称:
const insertColumn = (table) => { // Notice change of parameter name
// Removed the assignment to table variable here
let cell_1 = table.rows[0].insertCell(1);
// ...etc
}
应该使用Osmwidget,这是我使用以下解决方案的方式:
如何在django?
我的模型:
from django.contrib.gis.db import models
class Territory(models.Model):
poly = models.PolygonField(_('Polygon, borders of territory.'))
location = models.PointField(_('Location, point on the map.'))
我的直列模型:
from django.contrib.gis.forms.widgets import OSMWidget
class TerritoryStackedInline(admin.StackedInline):
model = Territory
extra = 1
def formfield_for_dbfield(self, db_field, **kwargs):
if db_field.name in ('poly', 'location'):
kwargs['widget'] = OSMWidget
return super().formfield_for_dbfield(db_field,**kwargs)
OSMWIDGET覆盖模板为“ GIS/OPENLAYERS-OSM.HTML”的模板发生在哪里发生的基本层的覆盖在哪里:
{% block base_layer %}
var base_layer = new ol.layer.Tile({source: new ol.source.OSM()});
{% endblock %}
没有它,基本层代码看起来像这样(使用的模板使用了”(模板) gis/openlayers.html”):
{% block base_layer %}
var base_layer = new ol.layer.Tile({
source: new ol.source.XYZ({
attributions: "NASA Worldview",
maxZoom: 8,
url: "https://map1{a-c}.vis.earthdata.nasa.gov/wmts-webmerc/" +
"BlueMarble_ShadedRelief_Bathymetry/default/%7BTime%7D/" +
"GoogleMapsCompatible_Level8/{z}/{y}/{x}.jpg"
})
});
{% endblock %}
如您所见,有不同的来源。
考虑以下情况。
您安装了三个版本的Python:
- Python 3.7
- Python 3.8
- Python 3.9
您的“默认”版本为3.8。这是出现在您的路径中的第一个。因此,当您键入 python3
(linux或mac)或 python
(windows)在shell中,您将启动3.8解释器,因为这是第一个在穿越时发现的python可执行文件你的道路。
假设您正在启动一个新项目,您要在其中使用Python 3.9。您创建一个称为 .venv
的虚拟环境并激活它。
python3.9 -m venv .venv # "py -3.9" on Windows
source .venv/bin/activate # ".venv\Scripts\activate" on Windows
现在,我们使用Python 3.9激活了虚拟环境。在外壳中键入 python
启动了3.9解释器。
但是,如果您键入
pip install <some-package>
,则使用哪种版本的 pip
?是默认版本的PIP,即Python 3.8还是虚拟环境中的Python版本?
解决这种歧义的一种简单方法是仅使用
python -m pip install <some-package>
-M
标志,确保您使用与活动python可执行的pip。
即使您只安装了一个全局版本的Python,也可以始终使用 -M
,这是一个很好的做法。
关于。路径
所谓的路径是您的系统搜索可执行文件的目录列表。当您键入命令(例如 python
)时,此列表将从第一个目录到最后一个目录,搜索与您键入的命令匹配的文件名。
如果找到文件名/命令,则匹配的文件将执行,而无需考虑潜在的以后匹配。如果没有发生匹配,则找不到命令
或其变体。这种行为是设计的。
在UNIX系统上,路径环境变量被称为 $ path
,而在Windows系统上,它被称为%path%
更多有关 -m -flag(2022年12月)
大多数查看此问题的人可能希望上面用PIP给出的解释。不过,从更一般的意义上讲,当使用 python -m some_module
时, -m
flag使Python Execute some_module
作为脚本。这在
“以脚本运行”是什么意思
?在导入文件的顶部语句。这可以使用 some_module
在导入文件中定义的函数,类和变量。
要执行 some_module
作为脚本而不是导入它,如果__name__ ==“ __ -main __” block在文件中,您将定义。在命令行上运行
python some_module.py
时,该块将执行。这很有用,因为您 不希望此代码块在导入其他文件时运行,但是您 do 希望它在从命令行调用时运行。
对于项目中的模块,此脚本/模块构造应按原样运行,因为从终端运行时,Python会从您的工作目录中找到模块:
python some_module.py
但是对于Python标准库的一个模块,这将行不通。 Python文档中的示例使用 timeIt
( pip
工作相同):
python3 timeit -s 'print("hello")' # 'python timeit.py ...' fails as well
这返回错误:“ Python:coble file'/home/&lt ;用户名&gt;/timeit':[errno 2]否此类文件或目录“
添加 -m
flag告诉Python告诉Python,请在 timeit.py.py
的路径中寻找路径并执行如果__name__ ==“ __ -main __”
从文件中的子句。
python3 -m timeit -s 'print("hello")'
这是预期的。
的来源如果__name __ ==“ __ main __”
可以找到时间级模块的块此处。
在 bash
4.4或更高版本中,进程替换将设置 $!
,这意味着您可以等待该过程以获取其退出状态。
#!/usr/bin/env bash
set -Eeuo pipefail
shopt -s inherit_errexit
echo 'before'
mapfile -t tuples < <(exit 1)
wait $!
echo 'after'
mapfile
本身(通常)不会具有非零的状态,因为它非常高兴地阅读过程替换会产生什么(如果有的话)。
尝试在RouteserviceProvider中添加域线。
Route::middleware("web")->domain('Domain Name')->namespace($this->namespace)->group(base_path("routes/web.php"));
我有一些您可能会执行的步骤:
-
照常上传文件,但是在此步骤中,您必须将用户ID作为参数
包含
- 像
-
重命名文件之前,请先保存图像,示例:
$ user-&gt; id。时间() 。 '。' 。 $ file-&gt; getClientExtension();
-
将其上传到文件夹
-
保存到您的表格
从文档中:
密度bool,可选的
如果为错误,则结果将包含每个垃圾箱中的样本数量。如果为true,结果是bin处的概率密度函数的值,归一化,使得范围内的积分为1 。
我怀疑您做了 np.sum(hist)
并获得了0.0017。 np.sum(hist)*bin_size
应为您提供正确的值1
您可以使用Python请求获取DAG_RUN_ID信息。之后您将能够计算运行时间。
response = requests.get(url=f"{base_url}/dags/{dag_id}/dagRuns/{dag_run_id}", headers={"Authorization": _basic_auth_str("username", "password")})
昨天我想起,当我使用V-container时,这并没有发生,因此我模仿了V-Container的CSS,但进行了一些更改以应用不同的样式。
本质上,如果V-Select的宽度相当低,则如果您希望它保持一定尺寸,则无法手动设置V-Select的宽度,最终是V-COL实际上在做的事情。
我希望根据父母的宽度进行更改,因此我使用了一个百分比,并减去了flexbox差距(20px)除以父母中的项目数(2),因此:
.v-select-class {
width: calc(50% - 10px);
}
希望这对将来的人有帮助。
即使您解决了问题,但事实证明您已经指定了 -MEM_PER_CPU = 300MB
在您的 sbatch
脚本中,我想添加就我而言,我的slurm设置不允许 -Mem_per_cpu
in sbatch
,只有 - mem
。因此, srun
命令仍将分配所有内存并阻止后续步骤。对我的关键是指定 -MEM_PER_CPU
(或 - mem
) srun
命令。
收集变量是该集合的一部分。它们适用于单次驱动器中的驾驶测试。
我很少使用它们,仅用于脚本的内部逻辑,而不是与环境相关的(例如常数为ISO代码))。
如果有必要在不同的配置中驱动相同的集合,则根据用例,我将变量转移到全球变量或ENV变量。
您可以通过更改QR码的字符串中的发行器名称来更改帐户名。这是我用您的应用程序名称生成替换“ awscognito”的字符串
`otpauth://totp/AWSCognito:${email}?secret=${code}&issuer=https://cognito-idp.ap-southeast-2.amazonaws.com/`
。
Fody的答案有效。因此,在完整的
中,my_cypress_spec.js
可以变成类似的东西:但是,我得到“ typeError ... win.foo不是函数”的原因是因为在我的
index.html中
在我的计算机上(不如上最初发布),我有一个开口&lt; script type =“模块”&gt;
。将其更改回&lt; script&gt;
进行了测试。因此,为了完整,我将其标记为答案,同时指出洞察力来自@fody和@jonrsharpe。
Fody's answer works. So, in full
my_cypress_spec.js
can become something like:However, the reason I was getting a "TypeError ... win.foo is not a function" was because in my
index.html
on my machine (not as originally posted above) I had an opening<script type="module">
. Changing that back to<script>
made the test pass.So for completeness I'll tag this as The Answer while noting the insights come from @Fody and @jonrsharpe.
我们可以直接单位测试HTML嵌入的JavaScript功能吗?