小编aen*_*rew的帖子

使用Django REST Framework从多个模型返回结果

我有三个模型 - 文章,作者和推文.我最终需要使用Django REST Framework构建一个feed,它使用Article和Tweet模型将所有对象聚合成一个反向时间顺序的feed.

知道我怎么做吗?我觉得我需要创建一个新的序列化器,但我真的不确定.

谢谢!

编辑:这是我到目前为止所做的.

应用程序/ serializers.py:

class TimelineSerializer(serializers.Serializer):
    pk = serializers.Field()
    title = serializers.CharField()
    author = serializers.RelatedField()
    pub_date = serializers.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

应用程序/ views.py:

class TimelineViewSet(viewsets.ModelViewSet):
    """
    API endpoint that lists all tweet/article objects in rev-chrono.
    """
    queryset = itertools.chain(Tweet.objects.all(), Article.objects.all())
    serializer_class = TimelineSerializer
Run Code Online (Sandbox Code Playgroud)

python django django-models django-views django-rest-framework

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

Facebook Auth与AngularJS和Django REST框架

我正在使用AngularJS开发一个SPA应用程序,它使用Django后端作为服务器.我从SPA与服务器通信的方式是使用django-rest-framework.所以现在我想用facebook(google和twitter)进行身份验证,我在这个主题上阅读了很多内容,发现OAuth.io正在客户端SPA端进行验证,而python-social-auth正在做同样的事情但在服务器端.

所以目前我只有客户端身份验证,我的应用程序连接到Facebook(使用OAuth.io)并成功登录.此过程返回access_token然后我向我的API发出请求,该请求必须登录此用户或通过给定令牌为该用户创建帐户,此部分不起作用.所以我不确定我错在哪里,也许是因为没有关于使用python-social-auth的完整教程所以也许我错过了什么或者......我不知道..

所以我的一些代码:

在SPA方面:这是与OAuth.io的连接,并且正在工作,因为我正在获取访问令牌.然后我必须向我的其他API发出请求.后端是'facebook','google'或'twitter'

OAuth.initialize('my-auth-code-for-oauthio');
OAuth.popup(backend, function(error, result) {
    //handle error with error
    //use result.access_token in your API request

    var token = 'Token ' + result.access_token;
    var loginPromise = $http({
         method:'POST', 
         url: 'api-token/login/' + backend + '/', 
         headers: {'Authorization': token}});

         loginPromise.success(function () {
             console.log('Succeess');
         });
         loginPromise.error(function (result) {
             console.log('error');
         });
});
Run Code Online (Sandbox Code Playgroud)

在我的settings.py中的服务器上,我已经为已安装的应用程序,模板上下文预处理器,一些auth后端添加了社交插件,这是我的文件:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    ...,
    'rest_framework',
    'rest_framework.authtoken',
    'api',
    'social.apps.django_app.default',
    'social'
)
TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth", …
Run Code Online (Sandbox Code Playgroud)

facebook angularjs django-rest-framework python-social-auth

28
推荐指数
2
解决办法
7696
查看次数

在TypeScript中实现D3"可重用图表"模式

下面第2节中的代码(这里的工作示例)基于第1节中的代码,但更改为使用箭头函数,它基于Mike Bostock在Toward Resusable Charts中的模式,即返回一个具有其他函数的函数.

如果我尝试在typescript(这里演示)中运行第1或第2部分中的代码,它会说出方法addToChart并且stop不存在类型(selection: any) => () => void.

我怎样才能得到打字稿识别功能性(addToChartstop在这种情况下)添加到返回的功能?

第1节

const mychart = function (){
  let stop = false;
  const chart = function(selection){
    function tick(){
      console.log("tick");
    }
    return tick;
  };

  // Adding a function to the returned 
  // function as in Bostock's reusable chart pattern
  chart.addToChart = function(value){ 
    console.log("addToChart");
    return chart;
  };

  chart.stop = function(){
    return stop = true;
  } …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js typescript

15
推荐指数
2
解决办法
445
查看次数

将Google地图样式数组转换为Google静态地图样式字符串

我已经构建了一个工具,允许人们将JSON地图样式应用于Google Map,现在我想添加对Google Static Maps API的支持.

使用以下样式数组:

"[{"stylers":[]},{"featureType":"water","stylers":[{"color":"#d2dce6"}]},{"featureType":"administrative.country","elementType":"geometry","stylers":[{"weight":1},{"color":"#d5858f"}]},{"featureType":"administrative.country","elementType":"labels.text.fill","stylers":[{"color":"#555555"}]},{"featureType":"administrative","elementType":"geometry.stroke","stylers":[{"visibility":"off"}]},{"featureType":"administrative.country","stylers":[{"visibility":"on"}]},{"featureType":"road.highway","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"simplified"}]},{"featureType":"road.arterial","stylers":[{"saturation":-100},{"lightness":40},{"visibility":"simplified"}]},{"featureType":"road.local","stylers":[{"saturation":-100},{"visibility":"simplified"}]},{"featureType":"landscape","elementType":"all","stylers":[{"hue":"#FFFFFF"},{"saturation":-100},{"lightness":100}]},{"featureType":"landscape.natural","elementType":"geometry","stylers":[{"saturation":-100}]},{"featureType":"landscape.man_made","elementType":"geometry.fill","stylers":[{"visibility":"simplified"},{"saturation":-100}]},{"featureType":"poi.park","elementType":"geometry","stylers":[{"saturation":-100},{"lightness":60}]},{"featureType":"poi","elementType":"geometry","stylers":[{"hue":"#FFFFFF"},{"saturation":-100},{"lightness":100},{"visibility":"off"}]}]"

(有关格式的更多文档)

我需要最终将其转换为URLescaped字符串,格式为:( style=feature:featureArgument|element:elementArgument|rule1:rule1Argument|rule2:rule2Argument 更多文档)

到目前为止,我已经编写了这个JavaScript来尝试转换内容,但它无法正常工作:

  function get_static_style(styles) {
    var result = '';
    styles.forEach(function(v, i, a){
      if (v.stylers.length > 0) { // Needs to have a style rule to be valid.
        result += (v.hasOwnProperty('featureType') ? 'feature:' + v.featureType : 'feature:all') + '|';
        result += (v.hasOwnProperty('elementType') ? 'element:' + v.elementType : 'element:all') + '|';
        v.stylers.forEach(function(val, i, a){
          var propertyname = Object.keys(val)[0];
          var propertyval = new String(val[propertyname]).replace('#', '0x');
          result += propertyname + ':' + …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps google-maps-api-3 google-maps-static-api

14
推荐指数
3
解决办法
4870
查看次数

使用Google Web Fonts获取不同的图形类型

根据这个页面:

[Raleway]是一个展示面,下载包括旧式衬里数字,标准和酌情连字,一套完整的变音符号,以及一个风格的替代品,灵感来自更多的几何无衬线字体,而不是其新奇怪的灵感默认字符集.

(强调我的)

数字的默认值是"旧样式"("onum" OpenType特征字符串),在标题中使用时看起来非常糟糕.理想情况下,我希望能够使用"衬里"变体("lnum"),"tabular"("tnum")字距(与比例 - "pnum"相对).

我尝试使用下面的font-feature-settings声明块,但无济于事:

font-feature-settings: "onum" off, "pnum" off, "lnum" on, "tnum" on;
-moz-font-feature-settings: "onum=0, pnum=0, lnum=1, tnum=1";       /* Firefox */
-webkit-font-feature-settings: "onum" off, "pnum" off, "lnum" on, "tnum" on;  /* WebKit */
-o-font-feature-settings: "onum" off, "pnum" off, "lnum" on, "tnum" on;       /* Opera */
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?如果我想下载完整的字体,然后将其重新导出为网络字体,我怎么能这样做,同时确保我得到衬里数字?

谢谢!

css fonts opentype webfonts google-webfonts

7
推荐指数
2
解决办法
9163
查看次数

使用 util.promisify 模拟 bluebird.promisifyAll

我试图以类似于 Bluebird 的方式使用 Node 8 的方式来保证整个node_redis RedisClient对象util.promisifypromisifyAll()工作,但运气不佳。

这是我迄今为止尝试过的:

import * as _redis from 'redis';
import { promisify } from 'util';
const client = _redis.createClient();
const redis = Object.keys(client).reduce((c, key) => {
  if (typeof c[key] === 'function') c[key] = promisify(c[key]).bind(c);
  return c;
}, client);
Run Code Online (Sandbox Code Playgroud)

然而,这有效:

const redis = {
  get: promisify(client.get).bind(client),
  set: promisify(client.set).bind(client),
  hget: promisify(client.hget).bind(client),
  hmset: promisify(client.hmset).bind(client),
};
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:我想使用util.promisify而不是像 Bluebird 这样的东西的主要原因是因为我在 TypeScript 中做这一切,而 BluebirdpromisifyAll似乎不适用。

redis node.js promise typescript bluebird

7
推荐指数
2
解决办法
2830
查看次数

按子键日期排序多维数组?

我有以下数组:

[0] => Array
        (
            [name] => The Name
            [description] => description
            [date] => Thur, May 5 @ 7:00 p.m.
            [rating] => PG
            [year] => 2011
        )

[1] => Array
        (
            [name] => Name 2
            [description] => description 2
            [date] => Sun, May 8 @ 7:30 p.m.
            [rating] => 14A
            [year] => 2011
        )
Run Code Online (Sandbox Code Playgroud)

还有大约5-10个零件.

我最终想要做的是使用数组的日期部分按天分组这些项目(即"所有带有"日期"的项目"落入"5月8日"应按此分组).

知道怎么回事吗?请注意,"日期"字段存储在DB中 - 这不是从date()转换的时间戳; 管他呢.

非常感谢!

php arrays sorting multidimensional-array

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

如何从srcset属性中提取图像集?

使用HTML5 srcset 图像候选字符串的官方规范,我创建了以下正则表达式:

/<img[^\>]*[^\>\S]+srcset=['"](?:([^"'\s,]+)\s*(?:\s+\d+[wx])(?:,\s*)?)+["']/gm
Run Code Online (Sandbox Code Playgroud)

...哪个应匹配以下标记:

<img srcset="image@2x.png 2x, image@4x.png 4x, image@6x.png 6x">
Run Code Online (Sandbox Code Playgroud)

...和返回三个指定的文件名(image@2x.png,image@4x.png,image@6x.png).

但是,即使它匹配,它也只返回最后一个.请参阅此Regex101演示.

我究竟做错了什么?

regex html5 image set

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