我正在为各种自定义发行版使用单个 django。我找到了一个解决方案,其中每个发行版独有的应用程序都位于 django 项目文件夹之外(我们称之为DIR/),并DIR/使用如何将所有 django 应用程序保留在特定文件夹中 (添加到sys.path)将其添加到 Django 路径
之外。路径解决方案)
该项目运行,但是现在它没有发现测试。在将应用程序移出 Django 项目文件夹之前,我可以简单地运行所有测试:
manage.py test
Run Code Online (Sandbox Code Playgroud)
但是,现在没有找到测试。除了添加DIR/到 settings.py 之外,我还尝试将其添加到 manage.py 并且没有帮助。通过阅读 django 文档,我发现我可以指定一个这样的模块:
manage.py test app_name.tests
Run Code Online (Sandbox Code Playgroud)
以上工作,但对许多应用程序是不切实际的。如何添加用于搜索测试的路径?
我读了这个,但它只描述了问题,而不是解决方案: Django test runner not found tests
请求我的项目结构:
somefolder/
|-- dist/
| |-- dist1/apps/
| | |---- app11/
| | '---- app12/
| |
| '-- dist2/apps/
| |---- app21/
| '---- app22/
|-- src/
|-- manage.py
|-- project/settings.py
|-- appA/
'-- appB/
Run Code Online (Sandbox Code Playgroud)
由于询问已经发现这有效(不理想): …
securityheaders.com 使我的配置失败并出现以下错误:
Set-Cookie There is no Cookie Prefix on this cookie.
Run Code Online (Sandbox Code Playgroud)
这是 cookie 的值:
Set-Cookie sessionid=123456789123456789123456789; expires=Thu, 12 Sep 2019 06:51:38 GMT; HttpOnly; Max-Age=1209600; Path=/; SameSite=Strict; Secure
Run Code Online (Sandbox Code Playgroud)
我试图在 settings.py 中添加 cookie 前缀:
CSRF_COOKIE_NAME = '__Secure-csrftoken'
Run Code Online (Sandbox Code Playgroud)
但它似乎是一个不同的参数。我已经搜索了文档,这就是我能找到的所有内容,似乎不适用。
securityheaders.com 在 cookie 前缀上声明它需要以__Secure-或__Host-
我试图将 的每个元素传递foo_list到一个函数中,并获取输出为Truthyexpensive_call的所有项目的列表。expensive_call我正在尝试用列表理解来做到这一点,这可能吗?就像是:
像这样的东西:
result_list = [y := expensive_call(x) for x in foo_list if y]
Run Code Online (Sandbox Code Playgroud)
或者....
result_list = [y for x in foo_list if y := expensive_call(x)]
Run Code Online (Sandbox Code Playgroud)
注意:这不是一个解决方案,因为它调用了两次昂贵的调用:
result_list = [expensive_call(x) for x in foo_list if expensive_call(x)]
Run Code Online (Sandbox Code Playgroud)
在有人建议不要使用列表理解之前,我知道可以这样做:
result_list = []
for x in foo_list:
result = expensive_call(x)
result and result_list.append(result)
Run Code Online (Sandbox Code Playgroud) 官方文档解释了如何自动为某些小部件添加资产。,从他们的示例:
from django import forms
class CalendarWidget(forms.TextInput):
class Media:
css = {
'all': ('pretty.css',)
}
js = ('animations.js', 'actions.js')
Run Code Online (Sandbox Code Playgroud)
它没有描述的是如何使 JS 资源延迟或异步加载,例如
<script defer src="https://myserver.com/static/animations.js">/script>
Run Code Online (Sandbox Code Playgroud)
如何添加deferorasync属性?
遵循有关 Web 组件的 google 教程,我喜欢作者在customElements.define函数调用中使用匿名类的方式,因为它在创建立即调用的函数调用时避免了更多括号。
我使用静态类变量来存储模板元素,因此每次实例化自定义标记时都不会查询它。
问题是connectedCallback我不知道如何引用类名,因为它是一个匿名函数。在 python 中可以type(self),但我的研究表明,typeof this由于原型魔法,这在 JS 中不起作用。
window.customElements.define('my-uploader', class extends HTMLElement {
static template = document.getElementById("TEMPLATE_UPLOADER");
constructor() {
super(); // always call super() first
}
/** Custom Component Reactions **/
connectedCallback() {
let shadowRoot = this.attachShadow({mode: "open"});
shadowRoot.appendChild(document.importNode(ANONYMOUS_NAME.template, true)); // <--- How to refer to the class name here?
}
Run Code Online (Sandbox Code Playgroud)
如何引用ANONYMOUS_NAME中的类' connectedCallback?
我使用的是Python 3.8,所以我使用https://pypi.org/project/backports.zoneinfo/来获取zoneinfo。Django 不赞成使用,所以我正在执行从到 的pytz更改pytzzoneinfo
有了 pytz 就可以了from pytz import UTC。python 文档从中获取它datetime.timezone.utc(并且这没有localize方法)。
如何执行与此等效的操作:
pytz.UTC.localize(my_datetime, is_dst=None)
使用 zoneinfo?
在学习 JavaScript 时,它推荐使用async/await因为它比 更易读.then,我同意。不幸的是,当谈到 PWA 服务人员时,async似乎被遗忘了。
尝试为具有异步样式的 Service Worker 创建安装函数时:
const cacheVersion = "v1";
const cacheAssets = [
"/",
"/index.html",
"/static/img/logo.svg",
];
async function install(version, assets) {
const cache = await caches.open(version);
console.log("Doing stuff....");
}
self.addEventListener("install", (event) => {
console.log("Service Worker INSTALL START");
event.waitUntil(install, cacheVersion, cacheAssets); // <--- Does not call install()
console.log("Service Worker INSTALL COMPLETE");
});
Run Code Online (Sandbox Code Playgroud)
该install函数永远不会运行。如果我改变这一行:
event.waitUntil(install, cacheVersion, cacheAssets);
Run Code Online (Sandbox Code Playgroud)
到
install(cacheVersion, cacheAssets);
Run Code Online (Sandbox Code Playgroud)
然后线路运行,但没有等待,导致问题。
如何使用event.waitUntil调用异步函数并等待它?
对我event.waitUntil …
我在用:
await Promise.race([promise1, promise2]);
Run Code Online (Sandbox Code Playgroud)
逻辑是如果promise1在 5 秒内没有解决/拒绝,那么promise2也许能够解决。因此,在延迟promise2尝试执行其操作后,如果失败,我希望promise2返回一个Promise永远无法解决的问题,以便一切都取决于等待promise1。
我试过
async function promise2(timeout=5000) {
await new Promise(resolve => setTimeout(resolve, timeout));
if (didStuffAndOK()) {
return "OK"
}
return new Promise( () => {} )
}
Run Code Online (Sandbox Code Playgroud)
return new Promise( () => {} )似乎被解释为承诺被拒绝而不是从未得到解决。
如何做出一个空洞的承诺(不是在现实生活中,而是在 JavaScript 中)?
根据我的理解,::before应该出现在元素下方,并且::after应该出现在元素上方(就 z-index 而言)。
在下面的示例中,当鼠标悬停在按钮上时,我尝试使背景颜色变暗(而不是前景色)。即使我用过::before它仍然出现在前面。为什么?我知道我可以用 来修复它z-index,但是根据这个有 6 个赞成票的评论:
我认为最好使用 :before ,这样你就可以得到正确的堆叠顺序,而无需使用 z-index 。
我不应该这样做,而且顺序应该是正确的?
.parent {
--my-color: red;
}
button {
color: blue;
background-color: var(--my-color);
padding: 8px 16px;
position: relative;
}
button:hover {
background-color: transparent;
}
button:hover::before {
display: block;
content: "";
position: absolute;
top: 0; left: 0; width: 50%; height: 100%; /* width is 50% for debugging (can see whats below) */
background-color: var(--my-color);
filter: brightness(80%);
}Run Code Online (Sandbox Code Playgroud)
<div class="parent">
<button …Run Code Online (Sandbox Code Playgroud)django ×3
javascript ×3
python ×3
async-await ×1
cookies ×1
css ×1
datetime ×1
django-forms ×1
promise ×1
security ×1
timezone ×1
unit-testing ×1
z-index ×1
zoneinfo ×1