小编Soh*_*oqi的帖子

跨域图像上传Angular + laravel

我一直在努力在服务器上上传图片.我在前端使用ngFileUpload.但我总是得到

"对预检请求的响应未通过访问控制检查:请求的资源上没有'Access-Control-Allow-Origin'标头"

Angular Code for file Upload:

 var uploadFile = function (file) {
      if (file) {

            if (!file.$error) {
              Upload.upload({
                  url: baseUrl+'upload',
                  file: file


              }).progress(function (evt) {
                  var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
                  //console.log(evt.total);
              }).success(function (data, status, headers, config) {
                  $timeout(function() {

                    console.log(data);
                    console.log(status);
                      if(status==200)
                        {

                          logo_path = data.logo_path;

                        }

                  });
              });
            }

      }
  };
Run Code Online (Sandbox Code Playgroud)

在Laravel上我已经像这样配置了CORS:

public function handle($request, Closure $next)
{
    header("Access-Control-Allow-Origin: http://localhost:8001/");

    // ALLOW OPTIONS METHOD
    $headers = [
        'Access-Control-Allow-Methods'=> 'POST, GET, OPTIONS, PUT, …
Run Code Online (Sandbox Code Playgroud)

cors angularjs laravel-5 ng-file-upload

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

根据另一个词典中的值过滤dict列表

我有一个字典列表list_of_dict,一组键set_of_keys和另一个字典dict_to_compare.

如果三个可能键中任意两个键的值与来自的值匹配,我需要过滤dicts列表dict_to_compare.

输入:

set_of_keys = {'val1', 'val2', 'val3'}

dict_to_compare = {'k1': 'val1', 'k2': 'val2','k3':'val6'}

list_of_dict = [
        {'k1': 'val1', 'k2': 'val2', 'k3':'val3'},
        {'k1': 'val4', 'k2': 'val5', 'k3':'val6'},
        {'k1': 'val7', 'k2': 'val8', 'k3':'val9'}
]
Run Code Online (Sandbox Code Playgroud)

输出:

 out = [{'k1': 'val1', 'k2': 'val2', 'k3': 'val3'}] #First element from list
Run Code Online (Sandbox Code Playgroud)
  • 所有元素list_of_dicts都具有相同的键.
  • dict_to_compare也有与元素相同的键list_of_dicts.
  • list_of_dicts可以匹配多个元素.
  • 针对两个键的任意组合的值应该匹配而不是全部三个.

我尝试通过明确指定一堆if elif条件来做到这一点.但问题是关键设置确实很大.有没有更好的方法来解决这个问题?

谢谢

python python-3.x

9
推荐指数
2
解决办法
1078
查看次数

使用参数添加函数到数组Javascript(Node.js)

我想用params将函数推送到数组而不执行它们.这是我到目前为止所尝试的:

 var load_helpers = require('../helpers/agentHelper/loadFunctions.js');
 var load_functions = [];
 load_functions.push(load_helpers.loadAgentListings(callback , agent_ids));
 load_functions.push(load_helpers.loadAgentCount(callback , agent_data));
Run Code Online (Sandbox Code Playgroud)

但是通过这种方式,函数会在推送时执行.该问题提供了类似的例子,但没有参数.如何在此示例中包含参数?

javascript arrays node.js

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

使用marshmallow序列化两个嵌套模式

我对python很新.我有两个SQLAlchemy模型如下:

class listing(db.Model):
 id = db.Integer(primary_key=True)
 title = db.String()
 location_id = db.Column(db.Integer, db.ForeignKey('location.id'))
 location = db.relationship('Location', lazy='joined')

class location(db.Model):
 id = db.Integer(primary_key=True)
 title = db.String()
Run Code Online (Sandbox Code Playgroud)

我有两个Marshmallow架构类:

class ListingSchema(Schema):
 id = fields.Int()
 title = fields.Str()
 location_id = fields.Int()

class LocationSchema(Schema):
 id = fields.Int()
 title = fields.Str()
Run Code Online (Sandbox Code Playgroud)

我创建了一个嵌套的架构类,如:

class NestedSchema(Schema):
 listing = fields.Nested(ListingSchema)
 location fields.Nested(LocationSchema)
Run Code Online (Sandbox Code Playgroud)

我正在做连接查询,如:

listing,location = db.session.query(Listing,Location)\
                            .join(Location, and_(Listing.location_id == Location.id))\
                            .filter(Listing.id == listing_id).first()
Run Code Online (Sandbox Code Playgroud)

数据在我检查过的对象中加载.如何解析这个架构?我试过了

result,errors = nested_listing_Schema(listing,location)
Run Code Online (Sandbox Code Playgroud)

这给出了错误:"列表对象不可迭代."

python flask-sqlalchemy marshmallow

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

从没有元信息的查询中获取结果集Sequelize

我是Node.js/Sequelize.js的新手.我有以下一段代码用于查询:

var agent_list =  models.agent.findAll({
                                      subQuery: false,
                                      where:   qry_filter,
                                      attributes: select_attributes,
                                      include:include_models,
                                      group: ['agent_id'],
                                      order: agent_data.sort || appConfig.DEFAULT_AGENT_SORT,
                                      limit: agent_data.num_results || appConfig.DEFAULT_RESPONSE_SIZE

                                    })

                                   .then(function(agent_list){

                                      console.log(agent_list);

                                   });
Run Code Online (Sandbox Code Playgroud)

语句"console.log(agent_list)"打印从db检索的数据加上元信息,如选项:{...},modelOptions:{...}等.dataValues对象包含我想要的数据.结果集是嵌套的js对象,每个对象具有相同的结构,因此很难遍历结果集并仅获取dataValues.

我有使用PHP的经验,其中类似这样的 $ db - > Execute("$ qry")将返回带有meta的结果集并获取行 $ db - >执行("$ qry") - > getRows()可以使用.如何在续集中实现这一目标?

node.js sequelize.js

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

SQLALchemy-Utils:在 LTree 中使用“~”运算符

我正在尝试使用 Flask、SQLAlchemy-Utils和 Flask-SQLAlchemy查询 Postgres 物化路径视图(ltree)。SQLAlchemy-Util Docs展示了使用 LTree 的 '==', '!=' 运算符的用法。如何使用“~”运算符?

我在 sqlalchemy_utils/ltree.py 中看到了代码:

class comparator_factory(types.Concatenable.Comparator):
    def ancestor_of(self, other):
        if isinstance(other, list):
            return self.op('@>')(expression.cast(other, ARRAY(LtreeType)))
        else:
            return self.op('@>')(other)

    def descendant_of(self, other):
        if isinstance(other, list):
            return self.op('<@')(expression.cast(other, ARRAY(LtreeType)))
        else:
            return self.op('<@')(other)

    def lquery(self, other):
        if isinstance(other, list):
            return self.op('?')(expression.cast(other, ARRAY(LQUERY)))
        else:
            return self.op('~')(other)

    def ltxtquery(self, other):
        return self.op('@')(other)
Run Code Online (Sandbox Code Playgroud)

这是 LtreeType 的子类。

简单来说==,我正在使用:

Model.query.filter(Model.path == LTree('1.2')).all()
Run Code Online (Sandbox Code Playgroud)

但是使用此表达式会引发验证错误:

Model.query.filter(Model.path == LTree('~1.2')).all()
Run Code Online (Sandbox Code Playgroud)

如何在有效的 SQLALchemy 查询中格式化上述表达式?

sqlalchemy flask flask-sqlalchemy

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

将一个嵌套列表的元素与另一个嵌套列表进行比较

我有两个列表清单

l1 = [[1,2,3],[4,5,6],[7,8,9]]
l2 = [['a','b',4],['c','d',1],['e','f',12],['i','j',18]]
Run Code Online (Sandbox Code Playgroud)

我想迭代l1并检查是否l1[0]任何 匹配l2[2],在这种情况下输出应该[1, l1[0],l2[0]]输出[0, l1[0], l2[0]].输出应该是单个嵌套列表(或元组列表),其中包含每个元素的结果l1.两个列表可以具有不同的大小.

我尝试用for循环解决这个问题:

output = list()
for i in l1:
   matched = 0
   for j in l2:
       if j[2] == i[0]:
          output.append([1,i[0], j[0]])
          matched = 1
    if matched == 0:
       output.append([0,i[0]])
Run Code Online (Sandbox Code Playgroud)

这给出了正确的输出

[[1, 1, 'c'], [1, 4, 'a'], [0, 7]]
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找一个更紧凑的解决方案.是否有可能通过列表理解类似的东西来解决这个问题,这可以减少涉及的行数?

我尝试了嵌套列表理解但无法使其工作

out = [[(1,i[0],k[0]) if(k[2] == i[0]) else (0,i[0],k[0]) for k in l2] for i in …
Run Code Online (Sandbox Code Playgroud)

python list

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

具有负值的 Python timedelta 对象

我不太明白如何datetime.timedelta解释否定论点。

正值:

>>> from datetime import timedelta
>>> d = timedelta(days=1,seconds=1,microseconds=1,milliseconds=1,minutes=1,hours=1,weeks=1)
>>> (d.days, d.seconds, d.microseconds)
>>> (8, 3661, 1001)
Run Code Online (Sandbox Code Playgroud)

这很简单。带有负值的类似示例如下所示:

>>> from datetime import timedelta
>>> d = timedelta(days=-1,seconds=-1,microseconds=-1,milliseconds=-1,minutes=-1,hours=-1,weeks=-1)
>>> (d.days, d.seconds, d.microseconds)
>>> (-9, 82738, 998999) 
Run Code Online (Sandbox Code Playgroud)

根据我的理解,秒和微秒的推导如下:

  • 秒 = 86399 - (-60-3600-1)
  • 微秒 = 999999 - (-1-1000)

这样对吗?为什么天数等于 -9?

我正在阅读文档的这一部分。但仍然不太了解负值的工作。请分享解释或相关文档链接。谢谢 :)

python python-datetime

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

从列表python中找到最大平均值

我有一个清单:

input= [
   ["Pakistan", 23],
   ["Pakistan", 127],
   ["India", 3],
   ["India", 71],
   ["Australia", 31],
   ["India", 22],
   ["Pakistan", 81]
]
Run Code Online (Sandbox Code Playgroud)

现在我想过滤出平均值最高的关键值.就像在这种情况下输出应该是"巴基斯坦":

out = "Pakistan"
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮忙

python

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

在列表中连接元组的元素

我有一个元组列表:

[('fruit', 'O'), ('is', 'O'), ('the', 'O'), 
 ('subject', 'O'), ('of', 'O'), ('a', 'O'), 
 ('Roald', 'PERSON'), ('Dahl', 'PERSON'), ('children', 'O'), 
 ("'s", 'O'), ('book', 'O'), ('?', 'O')]`
Run Code Online (Sandbox Code Playgroud)

我想将此列表缩减为:

[('fruit', 'O'), ('is', 'O'), ('the', 'O'), 
 ('subject', 'O'), ('of', 'O'), ('a', 'O'), 
 ('Roald Dahl', 'PERSON'), ('children', 'O'), 
 ("'s", 'O'), ('book', 'O'), ('?', 'O')]`
Run Code Online (Sandbox Code Playgroud)

也就是说,任何第二个值不是"O"的连续元组都应该将它们的第一个值连接起来.这适用于任何长度的列表,以及任何数量的连续元组.

尝试

def join_tags(list_tags):
  res = []
  last_joined = None
  last_seen = (None, None)

  for tup in list_tags:
    if tup[1] == 'O':
      res.append(tup)
      last_joined = None
    else:
      if tup[1] == last_seen[1]: …
Run Code Online (Sandbox Code Playgroud)

python

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