小编Saq*_*Ali的帖子

如何使用Chrome的扩展"Advanced Rest Client"测试REST API

按照以下链接的说明,我成功为我的Django应用程序构建了一个REST API:http://django-rest-framework.org/tutorial/quickstart.

我可以通过在Unix提示符下执行以下操作来测试它:

curl -H 'Accept: application/json; indent=4' -u root:myPassword http://www.myWebsite.com/users/
Run Code Online (Sandbox Code Playgroud)

有用 :)

但是,我想使用Chrome扩展程序Advanced Rest Client来测试相同的功能.我已经安装了扩展程序,但我不知道在哪里/如何放置字段.当我做出受过教育的猜测时(正如您在屏幕截图中看到的那样),它拒绝它说"未提供身份验证凭据"

失败请求的屏幕截图

我应该如何/在何处将参数指定给REST API?

rest google-chrome-extension

88
推荐指数
4
解决办法
27万
查看次数

我的路由中需要什么base_name参数才能使这个Django API工作?

我正在构建一个Django应用程序,它公开了一个REST API,用户可以通过它查询我的应用程序的模型.我按照这里的说明操作.

我的路线在myApp的url.py中看起来像这样:

from rest_framework import routers
router = routers.DefaultRouter()    router.register(r'myObjects/(?P<id>\d+)/?$', views.MyObjectsViewSet)
url(r'^api/', include(router.urls)),
Run Code Online (Sandbox Code Playgroud)

我的模型看起来像这样:

class MyObject(models.Model):
    name = models.TextField()
Run Code Online (Sandbox Code Playgroud)

我的Serializer看起来像这样:

class MyObjectSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = MyObject
    fields = ('id', 'name',)
Run Code Online (Sandbox Code Playgroud)

我的Viewset看起来像这样:

class MyObjectsViewSet(viewsets.ViewSet):

    def retrieve(self,request,pk=None):
        queryset = MyObjects.objects.get(pk=pk).customMyObjectList()

        if not queryset:
            return Response(status=status.HTTP_400_BAD_REQUEST)
        else:
            serializer = MyObjectSerializer(queryset)
            return Response(serializer.data,status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)

当我点击/ api/myObjects/60 /时出现以下错误:

base_name参数未指定,并且无法自动确定视图集中的名称,因为它没有.model.queryset属性.

我从这里了解到我的路线上需要一个base_name参数.但是从文档来看,我不清楚base_name参数的值应该是什么.有人可以告诉我base_name的路径应该是什么样的?

python django rest

31
推荐指数
4
解决办法
3万
查看次数

当使用lambda作为属性的默认值时,Django 1.7.1 Makemigrations失败

我正在使用Django 1.7.1.我的模型看起来像这样:

from datetime import datetime
from django.db import models

class myModel(models.Model):
    x = models.CharField(max_length=254,null=True, blank=True,)
Run Code Online (Sandbox Code Playgroud)

一切都很好.

但是,当我将以下属性添加到myModel时,它会中断:

    y = models.DateTimeField(default=lambda: datetime.utcnow() + timedelta(days=1), editable=False)
Run Code Online (Sandbox Code Playgroud)

manage.py makemigrations 给我以下错误:

ValueError: Cannot serialize function: lambda
Run Code Online (Sandbox Code Playgroud)

这似乎是一个已知的错误:http://comments.gmane.org/gmane.comp.python.django.scm/125724

那么我该如何解决呢?y从创建模型的那一刻起,我需要将默认值自动设置为24小时.

django lambda django-models django-migrations

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

为什么我不能设置SSHFS共享?"OSXFUSE文件系统不可用"错误

我正在尝试从本地计算机设置SSHFS共享到远程计算机,但它无法正常工作.我收到错误OSXFUSE文件系统不可用(见下文).怎么解决这个?

仅供参考,我的本地机器是运行OSX 10.9.3的MacBook Pro笔记本电脑.远程机器实际上是运行CentOS的同一硬件上的VirtualBox.

% brew install sshfs                                # <---- SSHFS is installed
Warning: sshfs-2.5.0 already installed

% brew install osxfuse                              # <---- OSX Fuse is installed
Warning: osxfuse-2.6.4 already installed

% ssh remote_user@XXX.XXX.XXX.XXX                   # <---- See, SSH works!!
Last login: Wed Jun 18 18:36:11 2014 from XXX.XXX.XXX.XXX
[remote_user@XXX.XXX.XXX.XXX ~]% exit

% sudo mkdir /mnt
% sudo mkdir /mnt/Share    
% sudo sshfs -o IdentityFile=~/.ssh/id_rsa.pub remote_user@XXX.XXX.XXX.XXX:/ /mnt/Share
the OSXFUSE file system is not available (-1)
the OSXFUSE file system is not …
Run Code Online (Sandbox Code Playgroud)

macos centos sshfs

24
推荐指数
3
解决办法
2万
查看次数

如何在Django中执行多步骤表单?

我想在Django中创建一个多步骤表单,它只在所有步骤结束时提交数据以进行处理.每个步骤都需要能够访问和显示我们在上一步中输入的数据.

有没有办法用Django做到这一点?Django的Form-Wizard无法处理这个基本功能.

django

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

如何将BigDecimal转换为2位小数字符串?

我想将BigDecimal对象转换为货币值到两个小数位.我不想要任何四舍五入.我该怎么做?

以下方法均无效:

v = BigDecimal("7.1762")
w = BigDecimal("4.2")

v.to_s('2F')            # => "7.17 62"
v.to_s('F')             # => "7.1762"
v.to_s('%0.2F')         # => "0.71762E1"
v.to_s('%0.2f')         # => "0.71762E1"
v.truncate(2).to_s('F') # => "7.17" # This one looks like it worked
w.truncate(2).to_s('F') # => "4.2"  # But it doesn't pad with the trailing zero(es)
Run Code Online (Sandbox Code Playgroud)

ruby string

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

如何在Javascript/Angular JS中进行舍入 - 但删除无关紧要的数字

我的Javascript控制器中有以下语句:

$scope.myList = [0, 1, 0.5, 0.6666666];
Run Code Online (Sandbox Code Playgroud)

我的AngularJS模板包括以下内容:

<div ng-repeat="i in myList">{{i}}</div>
Run Code Online (Sandbox Code Playgroud)

这会产生以下HTML输出:

<div>0</div>
<div>1</div>
<div>0.5</div>
<div>0.6666666</div>
Run Code Online (Sandbox Code Playgroud)

但是,我想将数字四舍五入到小数点后两位.但是,我想在输出中只看到有效数字.我不想看到尾随零.我该怎么做?使用{{i | number:2}}不会消除尾随零.

html javascript angularjs angularjs-filter

19
推荐指数
2
解决办法
5万
查看次数

如何在我的本地主机上运行时让Docker容器相互通信?

我有一个完全在我的MacBook上本地运行的Web应用程序.

Webapp有一个前端(Angular/Javascript)和一个后端(Python/Django),它实现了RESTful API.

我对后端进行了Docker化,以便它在Docker容器中完全自包含并暴露端口8000.我将此端口本地映射到4026.

现在我需要Dockerize前端.但是,如果我在本地主机上运行这两个docker容器,我怎样才能让FE向BE发送HTTP请求?FE容器不会知道它外面存在的任何东西.对?

这就是我运行FE的方式:

$ http-server
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8080
  http://192.168.1.16:8080
Hit CTRL-C to stop the server
Run Code Online (Sandbox Code Playgroud)

请提供参考资料,说明如何实现这一目标.

docker

19
推荐指数
3
解决办法
3万
查看次数

如何使角度应用程序从命令行获取参数?

我有一个AngularJS应用程序,我的代码看起来像这样:

myApp = angular.module('myApp',
  [
    'ui.router',
    'ngMaterial',
    'ngMessages'
  ]
);

myApp.constant('CONSTANTS', (function() {
  // Define your variable
  return {
    backend: {
      baseURL: 'http://mybackend.com:3026'
    }
  };
})());
Run Code Online (Sandbox Code Playgroud)

我在端口号8000上使用http-server运行此应用程序,如下所示:

% http-server -p 8000
Run Code Online (Sandbox Code Playgroud)

我想传递一个命令行参数,backend.baseURL以便它超越代码中指定的值.我该怎么做??

angularjs

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

如何使用curl直接获取Google OAuth 2.0 Access令牌?(不使用谷歌库)

我正在尝试按照教程使用他们的OAuth 2.0 API对Google进行身份验证.但是,我想直接curl打电话而不是使用他们的库.

我已获得客户端ID和客户端密钥.现在我正在尝试获取这样的访问令牌:

curl \
--request POST \
--header "Content-Type: application/json" \
--data '{
  "client_id":"MY_CLIENT_ID",
  "client_secret":"MY_SECRET_KEY",
  "redirect_uri": "http://localhost/etc",
  "grant_type":"authorization_code"
}' \
"https://accounts.google.com/o/oauth2/token"
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.它给了我以下错误:

{
  "error" : "invalid_request",
  "error_description" : "Required parameter is missing: grant_type"
}
Run Code Online (Sandbox Code Playgroud)

有人可以请我提供样本卷曲调用以获取访问令牌(和刷新令牌)吗?

curl google-api oauth-2.0 google-oauth2

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