小编mai*_*_73的帖子

JS:在异步函数中获取内部函数参数并执行回调

我尝试编写返回异步函数的所有结果的函数,并执行一个回调,该回调推入一个数组并记录每个异步函数的结果.

作为服务员,在完成所有菜肴后带来所有菜肴.我不明白如何获取应该返回的子参数.任务代码和我的工作解决方案如下:

任务:

var dishOne = function(child) {
    setTimeout(function() {
        child('soup');
    }, 1000);
};

var dishTwo = function(child) {
    setTimeout(function() {
        child('dessert');
    }, 1500);
};
waiter([dishOne, dishTwo], function(results) {
    console.log(results); // console output = ['soup', 'dessert']
});
Run Code Online (Sandbox Code Playgroud)

我的工作解决方案:

function child(arg) {
    this.arr.push(arg)
}

function waiter(funcArray, doneAll) {
    var result = {
        arr: []
    };
    let i = 0;
    const x = child.bind(result)
    funcArray.forEach(function(f) {
      f(x)
      i++;
      if(i == 2) {
        doneAll(result.arr)
      }
    });
}
Run Code Online (Sandbox Code Playgroud)

javascript

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

使用django admin中的raw_id_fields添加链接到更改页面

有没有机会在django admin中添加链接到'raw_id_fields'旁边的外键对象的页面?我使用raw_id_fields来减少对mysql的查询次数.当我不使用raw_id_fields时,我可以编辑或添加外键对象.

如何用raw_id_fields做到这一点?

@AntoinePinsard,我尝试了第二种解决方案."Edit My FK"字段已创建,但除了连字符外什么也没有.

那是我的模式.

class FlatAdmin(admin.ModelAdmin):
    inlines = [NeedInline]
    readonly_fields = ('flat_house_edit_link',)
    raw_id_fields = ('flat_house',)
    list_display = ('show_date','show_block','show_house','show_rooms','show_price','show_stage')
    list_filter = ('flat_house__house_block','flat_rooms')
    search_fields = ('flat_house__id',)

    field = ['flat_house','flat_house_edit_link','flat_owner','flat_price','flat_rooms','flat_total_sq','flat_life_sq','flat_kitchen_sq','flat_floors']

    def flat_house_edit_link(self, instance):
        if instance:
            fk_id = instance.user_id
        else:
            fk_id = None
        if fk_id:
            opts = instance._meta.get_field('flat_house').rel.model._meta
            related_url = reverse(
                'admin:{}_{}_change/?_to_field=id&_popup=1'.format(
                     opts.ha,
                     opts.house,
                ),
                args=[fk_id],
            )
            return format_html(
                 '<a target=_blank href="{}">Go!</a>', related_url)
        else:
            return "No related object"
    flat_house_edit_link.short_description = "Change house"
admin.site.register(Flat,FlatAdmin)
Run Code Online (Sandbox Code Playgroud)

django django-admin

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

Django admin在mysql中进行了大量的重复查询

我遇到了一个问题.

当我尝试打开更改页面以查看元素内的参数(例如djangosite.com/admin/djangoapp/someelement/1/change/)时,它加载速度非常慢(10-15秒).

我发现Django正在进行大量重复查询:

更新: 我认为我在admin.py中犯了错误.

   inlines = [PhoneInline,FlatInline,NeedInline]
Run Code Online (Sandbox Code Playgroud)

如果我删除上面的一切都很好.

mysql日志

2161 Query  set autocommit=0
         2161 Query SELECT `ha_phone`.`id`, `ha_phone`.`phone_number`, `ha_phone`.`phone_owner_id` FROM `ha_phone` WHERE `ha_phone`.`id` = 262
         2161 Query SELECT `django_content_type`.`id`, `django_content_type`.`app_label`, `django_content_type`.`model` FROM `django_content_type` WHERE (`django_content_type`.`model` = 'phone' AND `django_content_type`.`app_label` = 'MYAPP')
         2161 Query commit
         2161 Query set autocommit=1
         2161 Query SELECT `ha_owner`.`id`, `ha_owner`.`owner_pub_date`, `ha_owner`.`owner_name`, `ha_owner`.`owner_verify`, `ha_owner`.`owner_company_id` FROM `ha_owner` WHERE `ha_owner`.`id` = 236
         2161 Query SELECT `ha_company`.`id`, `ha_company`.`company_name` FROM `ha_company` WHERE `ha_company`.`id` = 1
         2161 Query SELECT `ha_owner`.`id`, …
Run Code Online (Sandbox Code Playgroud)

python mysql django django-admin

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

如何在 Django FormView 中使用 get_success_url() 发送成功消息

FormView如果表单有效,我将重定向到上一页。这工作正常,但我如何告诉用户信息已发布?我希望他在重定向后在模态窗口中看到成功消息。

我已经尝试完成request.sessionget_success_url但它不符合我的目标,因为用户可以多次提交表单。那么如何在get_success_urlin 中返回任何带有重定向的消息FormView

我的 FormView

class CatPhotoUploadFormView(FormView):
    template_name = 'blank.html'
    form_class = CatPhotoForm

    def get_success_url(self):
        self.request.session['success_message'] = 'Everything is fine'
        return reverse('cat:detail_cat', args=(self.kwargs['pk'],))

    def form_valid(self, form):
        cat = Cat.objects.filter(id__exact=self.kwargs['pk'])
        for each in form.cleaned_data['attachments']:
            print('****', each, '****', type(each))
            Photo.objects.create(photo_path=each, photo_author=self.request.user, photo_cat = cat[0])
        return super(CatPhotoUploadFormView, self).form_valid(form)
Run Code Online (Sandbox Code Playgroud)

django-forms django-class-based-views

4
推荐指数
2
解决办法
7056
查看次数

节点:读取数据,转换数据并使用流和管道写入文件

我尝试从文本文件中读取字符串,对其进行编码并保存到文件中。我想使用pipe以便hash从转移ReadStreamWriteStream。但我不知道如何转换更改后的数据。我的代码:

const crypto = require('crypto');
const fs = require('fs');
let hash = crypto.createHash('md5');
var rs = fs.createReadStream('./passwords.txt');
var ws = fs.createWriteStream('./new_passwords.txt');


rs.on('data', function(d) {
  hash.update(d);
});
rs.on('end', function(d) {
    console.log(hash.digest('hex'))
});
Run Code Online (Sandbox Code Playgroud)

stream fs node.js

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

用于下载csv文件的Javascript在FireFox中不起作用

我有一个用于转换数据并将其另存为csv文件的JavaScript。看起来像这样:

function downloadCSV(args) {
    var data, filename, link;
    var type = args.type;
    var fields = Object.keys(json_for_export[0]);
    var csv = json_for_export.map(function(row){
        return fields.map(function(fieldName){
            return '"' + (row[fieldName] || '') + '"';
            });
        });
   csv.unshift(fields);
   csv = csv.join('\r\n')
   if (csv == null) return;
   filename = 'csv' + '_' + args.filename || 'export.csv';
   if (!csv.match(/^data:text\/csv/i)) {
            csv = 'data:text/csv;charset=utf-8,' + '\uFEFF' + csv;
   }
   data = encodeURI(csv);
   link = document.createElement('a');
   link.setAttribute('href', data);
   link.setAttribute('download', filename);
   link.click();
}
Run Code Online (Sandbox Code Playgroud)

它可以在Chrome浏览器中正常运行,但不能在Firefox中运行。是什么原因造成的?检查控制台,然后将数据格式化为csv类型。

javascript csv

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