小编Pet*_*ter的帖子

如何在django-rest-framework中使用TokenAuthentication for API

我有一个django项目,使用django-rest-framework来创建api.

想要使用令牌基础认证系统,因此api调用(put,post,delete)只会为授权用户执行.

我安装了'rest_framework.authtoken'并为每个用户创建了令牌.

所以,现在从django.contrib.auth.backends身份验证,它返回用户,auth_token作为属性.(成功时).

现在我的问题是如何将带有post请求的令牌发送到我的api和api端如何验证令牌是否有效并且属于正确的用户?

app rest_framework.authtoken中是否有任何方法可以验证给定用户及其令牌?没发现这个非常有用!

更新(我做的更改):在我的settings.py中添加了这个:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.BasicAuthentication',
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    )
}
Run Code Online (Sandbox Code Playgroud)

还在我的标题中发送令牌,但它仍然无法正常工作:

if new_form.is_valid:
    payload= {"createNewUser":
              { "users": request.POST["newusers"],
                "email": request.POST["newemail"]
                }
              }

    headers =  {'content-type' : 'application/json', 
                'Authorization': 'Token 6b929e47f278068fe6ac8235cda09707a3aa7ba1'}

    r = requests.post('http://localhost:8000/api/v1.0/user_list',
                      data=json.dumps(payload),
                      headers=headers, verify=False)
Run Code Online (Sandbox Code Playgroud)

python django django-authentication django-rest-framework

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

在python 2.7中更新openssl

想知道是否有人可以解释openssl如何在python2.7中工作.我不确定python是否有自己的openssl或从本地机器/环境中获取它?

让我解释一下:(如果我在Python中这样做)

>>> import ssl
>>> ssl.OPENSSL_VERSION
'OpenSSL 0.9.8x 10 May 2012'
Run Code Online (Sandbox Code Playgroud)

(在终端)

$ openssl version
OpenSSL 0.9.8x 10 May 2012
$ which openssl 
/usr/bin/openssl
Run Code Online (Sandbox Code Playgroud)

现在我更新了openssl(已下载.)

$ cd openssl-1.0.1c
$ ./Configure darwin64-x86_64-cc --prefix=/usr --openssldir=/opt/local/etc/openssl shared
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)

这创建了单独的导演(如指定的那样),因此我将其复制到旧路径中

cp -f /usr/local/ssl/bin/openssl /usr/bin/openssl
Run Code Online (Sandbox Code Playgroud)

现在在终端openssl版本已经更新但不是来自python!

$ openssl version
OpenSSL 1.0.1c 10 May 2012
Run Code Online (Sandbox Code Playgroud)

我注意到.dylib仍然指向旧版本,我该如何更改?

$ ls -l /usr/lib/*ssl*
-rwxr-xr-x  1 root  wheel  411680 Jul 17  2012 /usr/lib/libssl.0.9.7.dylib
-rwxr-xr-x  1 root  wheel  602800 May 24 03:43 /usr/lib/libssl.0.9.8.dylib
-rwxr-xr-x  1 …
Run Code Online (Sandbox Code Playgroud)

python ssl openssl

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

Python httplib SSL23_GET_SERVER_HELLO:未知协议

注意:这个代码在Ubuntu上运行正常,但在mac上运行不正常,而不是在本地更改mac/python设置我正在尝试对代码进行更改,以便它可以在任何地方工作.

import ssl 
import httplib 
httplib.HTTPConnection(server, port, timeout)
Run Code Online (Sandbox Code Playgroud)

但它会引发错误:

[Errno 1] _ssl.c:503:错误:140770FC:SSL例程:SSL23_GET_SERVER_HELLO:未知协议

现在代码不使用urllib.request而是使用httplib

我想更改代码,因此它将SSLv3作为默认协议,如下所示:

ssl.SSLContext(ssl.PROTOCOL_SSLv3)
Run Code Online (Sandbox Code Playgroud)

我环顾四周,找到了一些链接,但没有任何工作!

此链接适用于ubuntu

python urllib和cURL的链接

python bug修复,但再次为urllib

python ssl httplib python-2.7

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

django 查询集运行时 - 在恒定时间内获取第 n 个条目

我正在使用多种方法通过不同的 django 查询集从数据库获取数据,但我想知道每个查询集的运行时,如果可能的话,还有更好的方法(也许可以在恒定时间内获取数据!!)

qs = MyModel.objects.order_by('-time')
qs = qs.filter(blah = blah)
Run Code Online (Sandbox Code Playgroud)

要获得第一个条目,我正在这样做:

entry = list(qs[:1])
first_entry = entry[0]
Run Code Online (Sandbox Code Playgroud)

或获得第 10 个也是最后一个条目:

entry = list(qs)
some_entry = entry[9]
last_entry = entry[-1] 
Run Code Online (Sandbox Code Playgroud)

但我相信这将花费 O(n) 时间,无论如何可以在恒定时间内获得第 n 项?我不想使用 get() 因为我不知道条目的 id 或其他值(已排序),而只知道位置。

我也可以使用注释,但这也需要 O(n) 运行时。

MyModel.objects.values('date').annotate(min_value=Min('value')).order_by('min_value')[0] 
Run Code Online (Sandbox Code Playgroud)

我知道该职位只需要在恒定时间内输入?

python django big-o runtime django-queryset

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

以 html 形式显示占位符而不是默认值

html 表单中的文本字段有默认值,但我想显示占位符而不是默认值。有任何想法吗?

html javascript forms twitter-bootstrap

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

更新django从1.4到1.5.1; 现在在setup_environ上弃用警告

更新django从1.4到1.5.1现在抛出这个:

弃用警告:不推荐使用'setup_environ'功能,您可能需要更新'manage.py'; 请参阅Django 1.4发行说明(https://docs.djangoproject.com/en/dev/releases/1.4/).

首先,我已经在v1.4了,为什么它现在显示呢?好..

manage.py已经有了这个:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
Run Code Online (Sandbox Code Playgroud)

但很少有应用程序使用此:

from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)

如果我评论上面的代码,它会抛出一个错误:

django.core.exceptions.ImproperlyConfigured:请求设置AUTH_USER_MODEL,但未配置设置.您必须在访问设置之前定义环境变量DJANGO_SETTINGS_MODULE或调用settings.configure().

所以,我调用'settings.configure'并用以下代码替换上面的代码:

from django.conf import settings
from mysite import settings as mysettings
settings.configure(mysettings, DEBUG=True)
Run Code Online (Sandbox Code Playgroud)

但它仍然是错误的!

AttributeError:'module'对象没有属性'LOGGING_CONFIG'

基本上'setup_environ'正在运行,但是在DeprecationWarning中,我怎么能得到它呢?显然,我发布了1.4版的发布说明,但无法弄清楚这一点.

python django updates django-1.5

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

静态方法中的python类变量

[更新]:完整代码

我总是对 pyhton 的静态方法感到困惑,但根据这个(最后一个答案),它应该可以工作!

得到错误:

AttributeError: 类 MyConnection 没有属性“myuser”

class MyConnection:
    def __init__(self, hostname, port, user, password):
        myhostname = hostname
        myport = port
        myuser = user
        mypassword = password
        isisessid = None

    @staticmethod
    def connect():
        my_session = MyConnection()

        headers = {'content-type': 'application/json'}
        headers['Authorization'] = 'Basic ' + string.strip(
            base64.encodestring(MyConnection.myuser + ':' + MyConnection.mypassword))

        body = json.dumps({'username': MyConnection.myuser, 'password': MyConnection.mypassword,
            'services': ['platform', 'namespace']})

        uri = '/session/1/session'

        connection = httplib.HTTPSConnection(MyConnection.myhostname, MyConnection.myport)
        connection.connect()

        try:
            connection.request('POST', uri, body, headers)
            response = connection.getresponse() …
Run Code Online (Sandbox Code Playgroud)

python oop static-methods static-variables

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