小编Max*_*ore的帖子

Svelte - 访问子组件的方法

我有一个简单地隐藏内容的应用程序Hidden.svelte

<script>
    let shown = false;

    function show() {
        shown = true;
    }
</script>

<svelte:options accessors={true}/>

{#if shown}
    <slot/>
{/if}
Run Code Online (Sandbox Code Playgroud)

家长App.svelte

<script>
    import Hidden from 'Hidden';

    let child;
</script>

<Hidden bind:this={child}>
    Content
</Hidden>

<button on:click={() => child.shown = true}>Show</button>
Run Code Online (Sandbox Code Playgroud)

因此,shown由于<svelte:options accessors={true}/>在父母中,可以轻松设置孩子的

但是,我想使用方法,show()因为它不仅可以设置shown值,还可以执行一些魔术

感谢 Chrome 的 DevTools,我发现所有组件都有一个Arraywith属性和方法,可以通过 some 访问.$$.ctx,因此show()可以像这样调用Hidden 的方法:

<button on:click={() => child.$$.ctx[2]()}>Show</button>
Run Code Online (Sandbox Code Playgroud)

但是)你知道)有没有合法的方法来做到这一点?

javascript svelte

11
推荐指数
1
解决办法
2310
查看次数

Django admin list_filter - 过滤字段为空(无或空字符串"")

在models.py我有:

class User(modals.Model):
    name = models.CharField(max_length=255)
    image = models.ImageField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

在admin.py中:

class UserAdmin(admin.ModelAdmin):
    list_filter = ['image']

admin.site.register(User, UserAdmin)
Run Code Online (Sandbox Code Playgroud)

我只是想通过图像或不图像来过滤用户(空或空字符串)

但是django显示按图片urls =)过滤

有没有办法使list_filter = ['image']表现像布尔字段?

建议大!

django django-admin

10
推荐指数
3
解决办法
4358
查看次数

在运行Django时,StatReloader是什么?

我刚刚用Django 2.2创建了新的Python 3.7 virtualenv

runserver打印:

使用StatReloader监视文件更改

我在Django的文档等中找不到任何信息。

它与Django特别相关吗?它与Django一起使用吗?它能做什么?为什么在PyCharm中将其打印为红色?我应该注意点什么吗?可以禁用吗?

大thx

django

9
推荐指数
3
解决办法
5348
查看次数

Django:缩小 HTML 以提高页面加载速度的最佳实践

关于https://developers.google.com/speed/pagespeed/insights/中的结果

spaceless也许用模板标签全局包装整个 HTML 就差不多了?

   {% spaceless %}
   <!DOCTYPE html>
   <html>
      ...
   </html>
   {% endspaceless %}
Run Code Online (Sandbox Code Playgroud)

或者它不安全并且有一些更好的方法?

django django-templates

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

Django:原子事务中的对象创建

我有一个简单的任务模型:

class Task(models.Model):

    name = models.CharField(max_length=255)
    order = models.IntegerField(db_index=True)
Run Code Online (Sandbox Code Playgroud)

还有一个简单的task_create视图:

def task_create(request):

    name = request.POST.get('name')
    order = request.POST.get('order')

    Task.objects.filter(order__gte=order).update(order=F('order') + 1)
    new_task = Task.objects.create(name=name, order=order)

    return HttpResponse(new_task.id)
Run Code Online (Sandbox Code Playgroud)

视图将新创建的现有任务转移+ 1,然后创建一个新任务.

并且有很多这种方法的用户,我想有一天会因为订购而出错,因为更新创建肯定应该一起执行.

所以,我只想保持谨慎,这足以避免任何数据损坏:

from django.db import transaction

def task_create(request):

    name = request.POST.get('name')
    order = request.POST.get('order')

    with transaction.atomic():
        Task.objects.select_for_update().filter(order__gte=order).update(order=F('order') + 1)
        new_task = Task.objects.create(name=name, order=order)

    return HttpResponse(new_task.id)
Run Code Online (Sandbox Code Playgroud)

1)可能select_for_updatefilter现有的任务创建行中应该做更多的事情Task.objects

2)return HttpResponse()位于何处?内部交易区块还是外部?

大thx

django transactions atomic

6
推荐指数
1
解决办法
1536
查看次数

CSSStyleDeclaration 的 getPropertyValue() 和括号表示法 [] 之间有区别吗?

例如,我们需要访问body'spadding-right

let el = document.querySelector('body');
let style = window.getComputedStyle(el);
Run Code Online (Sandbox Code Playgroud)

多亏了这个解释,很明显可以通过以下方式安全地完成:

style.paddingRight
Run Code Online (Sandbox Code Playgroud)

或者

style.getPropertyValue('padding-right')
Run Code Online (Sandbox Code Playgroud)

但是,这似乎也可以正常工作:

style['padding-right']
Run Code Online (Sandbox Code Playgroud)

有什么区别吗?谢谢

javascript css

6
推荐指数
1
解决办法
2928
查看次数

Django 模板 - 获取多个 GET 参数的列表

我有一个带有多个 GET 参数(同名)的 url -mycompany.com/?a=1&a=2

当我在 django 模板中这样做时:

{{ request.GET }}
Run Code Online (Sandbox Code Playgroud)

我得到:

<QueryDict: {'a': ['1', '2']}> 
Run Code Online (Sandbox Code Playgroud)

当我在 django 模板中这样做时:

{{ request.GET.a }}
Run Code Online (Sandbox Code Playgroud)

我得到:

2
Run Code Online (Sandbox Code Playgroud)

当我尝试循环时:

{% for a in request.GET.a %}
    {{ a }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我得到:

2
Run Code Online (Sandbox Code Playgroud)

如何使多个 GET 参数作为 django 模板中的列表?谢谢!

django django-templates

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

Django的注释Count with division返回整数而不是float

我有很多对象,其中3个有name ='AAA'

我通过'name'对它们进行分组并在组中注释num:

my_models = MyModel.objects.order_by('name').values('name').annotate(count=Count('name'))

for i in my_models:
    print(i.count, i.name)
Run Code Online (Sandbox Code Playgroud)

我明白了:

3, 'AAA'
1, 'BBB'
...
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是当我尝试添加一些公式来注释Count()时:

my_models = MyModel.objects.order_by('name').values('name').annotate(count=Count('name') / 2)
Run Code Online (Sandbox Code Playgroud)

我明白了:

1, 'AAA'
0, 'BBB'
...
Run Code Online (Sandbox Code Playgroud)

但预计:

1.5, 'AAA'
0.5, 'BBB'
...
Run Code Online (Sandbox Code Playgroud)

编辑:

Python部门与SQL部门通过Django的ORM不同,因此python 3中的2/1返回2.0 - OK,但不在SQL中

django django-orm django-annotate

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

邮箱验证码需要过期吗?

我已经注册了一个 GitHub 帐户来测试他们的电子邮件验证过程。所以:

  1. 他们向我发送了一封带有链接的电子邮件,其中包含我的用户名和 40 个字符的代码,例如:https: //github.com/users/USERNAME/emails/120066679/confirm_verification/47889d71648523e5d99db5b969f59809c2715fb6

  2. 我没有点击链接

  3. 4 天后,他们又向我发送了另一封邮件(提醒),要求我验证我的电子邮件,其中包含另一个不同的 40 个字符代码的链接

那么,更改 40 个字符的代码的目的是什么?我记得,其他服务无论如何都会使验证码过期。如果验证链接中已经有用户名,是否真的需要这样做?在暴力破解的情况下,他们可以只计算与特定用户相关的失败尝试并阻止它,对吧?

PS也很有趣,in链接的目的是什么emails/120066679?(这两个字母相似)

security email authentication email-verification

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

argparse.Namespace 和 types.SimpleNamespace 之间的区别?

看起来它们的行为完全相同 \xe2\x80\x93 两者都相似dicts,但都使用.文字来访问项目,但是它们都不是另一个项目的子类

\n
from argparse import Namespace\nfrom types import SimpleNamespace\n\nissubclass(Namespace, SimpleNamespace)  # False\nissubclass(SimpleNamespace, Namespace)  # False\n
Run Code Online (Sandbox Code Playgroud)\n

那么,两者之间有什么区别吗?\nargparse.Namespace可以在所有情况下使用吗?

\n

python python-3.x

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