小编Ale*_*lex的帖子

Rust,元组向量的类型定义

我正在跟踪exism rust轨迹,并且遇到了一个问题(我对rust非常非常陌生)

\n\n

这是一个计算整数的毕达哥拉斯三元组的函数:

\n\n
use std::collections::HashSet;\nuse rayon::prelude::*;\n\npub fn find(sum: u32) -> HashSet<[u32; 3]> {\n    let a_b_plus_c: Vec<(u32; 2)> = (1_u32..(sum / 3_u32)).into_par_iter()\n        .filter_map(|a| {\n            let b_plus_c: u32 = sum - a;\n\n            let whole_number_check: Option<u32> = (b_plus_c.pow(2) - a.pow(2)).checked_rem(b_plus_c * 2);\n\n            match whole_number_check {\n                Some(0) => Some((a, b_plus_c)),\n                Some(_) => None,\n                None => None,\n            }\n        }).collect::<Vec<(u32; 2)>>();\n\n    a_b_plus_c.into_par_iter().filter_map(|a, b_plus_c| {\n        let b: u32 = (b_plus_c.pow(2) - a.pow(2))/(b_plus_c * 2);\n        let c: u32 = b_plus_c - b;\n\n        match b {\n            b …
Run Code Online (Sandbox Code Playgroud)

arrays syntax rust

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

CSS转换忽略宽度

我有一个标签,显示为一个块.在页面加载时,其宽度通过css 动画从0增加到包含div的某个百分比(小提琴包含MWE,但此div中有多个链接,每个链接具有不同的宽度).在悬停时,我希望它使用CSS 过渡来更改颜色,更改背景颜色,还可以扩展到div的100%.颜色和背景颜色位有效,但似乎忽略了宽度过渡.

片段:

.home-bar {
  text-decoration: none;
  background-color: white;
  color: #5e0734;
  display: block;
  -webkit-animation-duration: 1.5s;
  -webkit-animation-timing-function: ease-out;
  -webkit-animation-fill-mode: forwards;
  animation-duration: 1.5s;
  animation-fill-mode: forwards;
  transition: color, background-color, width 0.2s linear;/*WIDTH IGNORED*/
  border: 2px solid #5e0734;
  overflow: hidden;
  white-space: nowrap;
  margin-right: 0;
  margin-left: 5px;
  margin-top: 0;
  margin-bottom: 5px;
  padding: 0;
}

.home-bar:hover {
  background-color: #5e0734;
  color: white;
  width: 100%;/*WIDTH IGNORED*/
  text-decoration: none;
}

#bar0 {
  -webkit-animation-name: grow0;
  animation-name: grow0;
}

@keyframes grow0 {
  from {
    width: 0%;
  }
  to …
Run Code Online (Sandbox Code Playgroud)

css css3 css-transitions css-animations

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

Django DRF 将 request.user 添加到模型序列化器

我正在使用 django rest 框架,并且我有一个通过模型视图集和模型序列化器创建的对象。此视图只能由经过身份验证的用户访问,并且对象应将其“uploaded_by”字段设置为该用户。

我已经阅读了文档,并得出结论,这应该可行

视图集:

class FooViewset(viewsets.ModelViewSet):
    permission_classes = [permissions.IsAdminUser]
    queryset = Foo.objects.all()
    serializer_class = FooSerializer

    def get_serializer_context(self):
        return {"request": self.request}
Run Code Online (Sandbox Code Playgroud)

序列化器:

class FooSerializer(serializers.ModelSerializer):
    uploaded_by = serializers.PrimaryKeyRelatedField(
        read_only=True, default=serializers.CurrentUserDefault()
    )

    class Meta:
        model = Foo
        fields = "__all__"
Run Code Online (Sandbox Code Playgroud)

但是,这会导致以下错误:

django.db.utils.IntegrityError: NOT NULL constraint failed: bar_foo.uploaded_by_id
Run Code Online (Sandbox Code Playgroud)

这表明序列化程序没有填充“uploaded_by”。

根据我对文档的理解,这应该已将该字段添加到来自序列化程序的验证数据中,作为 create 方法的一部分。

显然我误解了一些东西!

django django-serializer django-rest-framework django-rest-viewsets

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

从消费者外部收听 Django 频道 channel_layer

文档解释说可以从消费者外部发布到通道层:https : //channels.readthedocs.io/en/latest/topics/channel_layers.html#using-outside-of-consumers 我需要做相反。我有一个相当复杂的 python 脚本,它从 pubnub 读取实时数据,处理它,然后通过 channel_layer 上的组将它推送给消费者。这工作正常,但我需要消费者能够向此脚本宣布他们的存在,以便它可以向他们推送数据(它目前仅在从 pubnub 获取新数据时才推送到通道层,这可能是每 24 小时一次)。

我决定通过让消费者在连接时发布到“在线”频道来解决这个问题。我现在需要 pubnub 源脚本来收听这个频道。我已经尝试将以下内容添加到脚本中,它不再抛出错误,但实际上并没有响应消息。它成功地加入了通道层,但消息处理程序(receive_json)永远不会触发。

from channels.generic.websocket import JsonWebsocketConsumer


class channelConsumer(JsonWebsocketConsumer):

    def __init__(self):
        self.channel_name = 'source'
    def join(self):
        async_to_sync(channel_layer.group_add)('presence', self.channel_name)
    def receive_json(self, message):
        print("Presence Detected")
        # do some stuff
Run Code Online (Sandbox Code Playgroud)

进一步在代码中:

global channel_layer
channel_layer = get_channel_layer()

global listener
listener = channelConsumer()
listener.join()
Run Code Online (Sandbox Code Playgroud)

正如我所说,没有明确的错误,它似乎永远不会触发receive_json。肯定有数据包被发布到“存在”,所以问题肯定在下面的代码中。

listener websocket redis django-channels

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

React 将图像 src 作为对象返回

我有一个这样定义的变量:

const team = [
  {
    name: "Foo",
    bio: "FooBar",
    image: { foo }
  },
  {
    name: "Bar",
    bio: "FooBar",
    image: { bar }
  },
];
Run Code Online (Sandbox Code Playgroud)

像这样导入图像的位置:

import foo from "../assets/foo.jpg";
import bar from "../assets/bar.jpg";
Run Code Online (Sandbox Code Playgroud)

然后将它们传递给要呈现的组件,其中:

<TeamRow team={team} />

The TeamRow component looks like this:

const TeamRow = props => {
  const items = props.team.map((item, index) => {
    return (
      <div className="col-10 col-sm-4 col-md-1 mx-auto text-center">
        <div className="row">
          <div className="col-12 teamMemberImage">
            <img className="img-fluid" src={item.image} />
          </div>
        </div>
        <div className="row">
          <div …
Run Code Online (Sandbox Code Playgroud)

reactjs

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

延迟反应组件加载,直到头盔头部脚本加载

我有一个依赖于 google 地图 js api 的 React 组件。这是通过 script 标签导入到 App.js 页面的头部。当我尝试加载包含此组件的页面时,它失败,声称脚本未加载。但是,如果我首先打开另一个页面(这会导致加载脚本,但不包含此组件),然后导航到包含该组件的页面,则它可以工作。

这向我表明问题在于组件加载时脚本尚未加载。不过,我认为页面加载在获取脚本时应该被阻止。我不太确定如何解决这个问题。

应用程序.js:

class App extends Component {
  render() {
    return (
      <Router>
        <div>
          <Helmet>
            <script
              type="text/javascript"
              src="https://maps.googleapis.com/maps/api/js?key=AIzaSyDSn_vNbNZzrcFxl8bV3MH1j0kuoLVsOCQ&libraries=places"
            />
          </Helmet>

          <div className="pageContent">
                <Route exact path="/foo" component={FooScreen} />
                <Route exact path="/bar" component={BarScreen} /
          </div>
        </div>
      </Router>
    );
  }
}
export default App;
Run Code Online (Sandbox Code Playgroud)

在上面,FooScreen 包含该组件,而 BarScreen 不包含该组件。如果我直接打开 FooScreen,它会失败,如果我打开 BarScreen,然后导航到 FooScreen,它会工作。

javascript reactjs react-helmet

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

git rev-list 在 github 操作中不起作用

我有一个在创建版本时触发的 github 操作。

目标是:

  • 查找该版本所基于的标签
  • 查找该分支上的上一个标签

到目前为止,我有这个:

CURRENT_TAG=${{ github.event.release.tag_name }}
PENULTIMATE_TAG=$(git describe --exact-match --tags `git rev-list --tags --max-count=1 --skip=1`)
Run Code Online (Sandbox Code Playgroud)

然后将这些内容回显以进行测试。第一个工作正常,但第二个总是返回空。我在本地尝试了完全相同的命令,它返回第二个最新标签,如预期的那样。

我不知道为什么它在 github 操作中不起作用。为了调试,我删除了该git describe组件,确认实际上 gitrev-list没有返回任何内容。

git github github-actions

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

Django 模板语言解压字典

我有一个字典(作为另一个对象的一部分)传递给 django 模板语言。名为 'poll' 的对象具有属性self.textand self.votes,其中前者是一个字符串,后者是一个字典。字典看起来像这样: {'a1': 45.92422502870264, 'a2': 53.50172215843857} 我试图列出每个标签及其附带的编号,使用以下内容:

{% for l, x in poll.votes %}
<p>{{ l }} {{ x }}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

Django 回应

Exception Type: ValueError
Exception Value:    Need 2 values to unpack in for loop; got 3.
Run Code Online (Sandbox Code Playgroud)

我试过.iteritems- 文档解释说这.iteritems不是正确的方法,但他们没有解释正确的方法什么。

python django templates django-templates

3
推荐指数
1
解决办法
2152
查看次数

移动到 cloudfront + SSL 后,应用程序中的路由器链接断开

我有一个反应应用程序,使用托管在 S3 存储桶中的反应路由器,使用 Route53 作为 DNS 提供程序。该应用程序在 Route53 配置指向 S3 存储桶的情况下运行良好。

由于我想使用 SSL,我创建了一个指向存储桶的 Cloudfront 分配,带有 SSL 证书,并将 DNS 指向它。由于这样做,所有链接都无效(example.com 有效,但 example.com/foo 无效)。它只是返回一个 NoSuchKey 错误。我知道这是不正确的,因为钥匙肯定在那里,而且它以前是有效的。

amazon-s3 amazon-cloudfront reactjs react-router-v4

3
推荐指数
1
解决办法
2785
查看次数

Django,查看 url 参数

我有一个company模型,它的每个实例都有一个为admin用户命名的外键。

我正在编写一个视图以允许公司管理员管理他们的公司:

urls.py

path('admin/crn=<company_spec_url>', CompanyAdminView.as_view(), name="CompanyAdminView"),`
Run Code Online (Sandbox Code Playgroud)

views.py

class CompanyAdminView(LoginRequiredMixin, UserPassesTestMixin, TemplateView):
    template_name = 'company_admin.html'

    def test_func(self):
        company = Company.objects.filter(crn=context['company_spec_url'])[0]
        return company.admin == self.user

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['company'] = Company.objects.filter(crn=context['company_spec_url'])[0]
        context['announcements'] = CompanyAnnouncement.objects.filter(company__crn=context['company_spec_url'])
        return context
Run Code Online (Sandbox Code Playgroud)

get_context_data位工作正常,问题出在test_func. 显然,应该只允许公司的管理员管理公司,所以我试图进入test_func,以便对其进行测试。

中的代码test_func当前不起作用,因为它无法访问context. 最佳实践是:调用super().get_context_data一次,并创建context一个全局变量,以便可以从以下位置访问它test_func- 调用super().get_context_data两次,一次输入get_context_data一次test_func,或者完全调用其他方法?

我试过查看请求中的 GET dict,但它是空的。我可以test_func自己解析其中的 url来获取参数,但这似乎不是“正确”的方法。

django django-urls django-views

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