小编Dmi*_*lov的帖子

InvalidBasesError:无法解析[<ModelState:'users.GroupProxy'>]的基数

当我运行测试时,我在数据库初始化期间遇到此错误:

django.db.migrations.state.InvalidBasesError: Cannot resolve bases for [<ModelState: 'users.GroupProxy'>]
This can happen if you are inheriting models from an app with migrations (e.g. contrib.auth)
Run Code Online (Sandbox Code Playgroud)

我为contrib.auth Group模型创建了这个代理,将它放在django admin的应用程序中:

class GroupProxy(Group):
    class Meta:
        proxy = True
        verbose_name = Group._meta.verbose_name
        verbose_name_plural = Group._meta.verbose_name_plural
Run Code Online (Sandbox Code Playgroud)

那么我该怎么做才能解决这个问题呢?

python django unit-testing django-models django-migrations

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

如何在Django Rest Framework中使用自定义标记模型

我想使用Django Rest Framework auth但我希望为一个用户提供多个令牌.为了做到这一点,我需要实现自己的Token模型,我在Token身份验证类中找到了这个:

class TokenAuthentication(BaseAuthentication):
    """
    Simple token based authentication.
    ...
    """

    model = Token
    """
    A custom token model may be used, but must have the following properties.

    * key -- The string identifying the token
    * user -- The user to which the token belongs
    """
Run Code Online (Sandbox Code Playgroud)

但我不知道如何指定这个模型.我应该继承TokenAuthentication吗?

python django rest django-rest-framework

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

在Selenium中显示当前光标位置

有没有办法显示当前光标位置或类似的东西?我有动作链,应该点击某个对象上的确切点,但我想我已经选错了坐标.我使用Firefox webdriver.以下是脚本的外观:

from selenium import webdriver
import time
from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Firefox()
driver.get("http://www.mysite/")
elem = driver.find_element_by_xpath('//div[@id="player"][1]/object[@type="application/x-shockwave-flash"]')
action_chains = ActionChains(driver)
action_chains.move_to_element_with_offset(elem, 660, 420).perform()
action_chains.click().perform()
time.sleep(10)
driver.close()
Run Code Online (Sandbox Code Playgroud)

python testing flash selenium selenium-webdriver

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

遵循重定向后,Wget不会递归下载

这是我使用wget的方式:

wget --recursive --level=10 --convert-links btlregion.ru
Run Code Online (Sandbox Code Playgroud)

页面http://btlregion.ru/重定向到http://www.btlregion.ru/.当我wget像上面那样运行时,它遵循重定向,但只下载该页面 - 而不是所有页面递归.

我已经尝试了--max-redirects=1,--domains=www.btlregion.ru但它不起作用.

如果我wget直接在http://www.btlregion.ru/上调用,则递归下载有效.

linux redirect wget

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

如何使用python-social-auth在代码中通过Access Token进行身份验证

我有一个REST API,我需要通过Facebook Login API对用户进行身份验证.应该在移动应用程序中获取访问令牌(我猜),然后发送到服务器.所以我在旧教程中找到了一些代码,但我无法使其工作.这是代码:

from social.apps.django_app.utils import strategy
from django.contrib.auth import login
from django.views.decorators.csrf import csrf_exempt
from rest_framework.decorators import api_view, permission_classes
from rest_framework import permissions, status
from django.http import HttpResponse as Response


@strategy()
def auth_by_token(request, backend):
    user=request.user
    user = backend.do_auth(
        access_token=request.DATA.get('access_token'),
        user=user.is_authenticated() and user or None
        )
    if user and user.is_active:
        return user
    else:
        return None



@csrf_exempt
@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def social_register(request):
    auth_token = request.DATA.get('access_token', None)
    backend = request.DATA.get('backend', None)
    if auth_token and backend:
        try:
            user = auth_by_token(request, backend)
        except Exception, …
Run Code Online (Sandbox Code Playgroud)

python django facebook python-social-auth

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

Gunicorn CPU 使用率约为 100%

有时我的网络服务器会停止响应。

我发现此时 Gunicorn 进程的 CPU 负载约为 100%。我已经有一段时间没有更改代码库了,所以我认为这不会导致这种情况。

这是我用来运行 Gunicorn 的 bash 脚本:

#!/bin/bash

source /etc/profile.d/myapp.sh

NAME="myapp-web-services"
DJANGODIR="/home/myapp/myapp-web-services"
SOCKFILE=/tmp/myapp-web-services.sock
USER=myapp
GROUP=myapp
NUM_WORKERS=9
TIMEOUT=100
DJANGO_WSGI_MODULE=settings.wsgi

echo "Starting $NAME as `whoami`"

cd $DJANGODIR
source /home/myapp/.virtualenvs/myapp-web-services/bin/activate
export PYTHONPATH=$DJANGODIR:$PYTHONPATH

RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR

exec newrelic-admin run-program /home/myapp/.virtualenvs/myapp-web-services/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --bind=unix:$SOCKFILE \
  --log-level=warning \
  --timeout=$TIMEOUT \
  --log-file=- \
  --max-requests=1200
Run Code Online (Sandbox Code Playgroud)

我的系统中有 4 个 CPU,因此根据文档,9 个工作线程应该没问题。

linux webserver gunicorn

7
推荐指数
0
解决办法
3256
查看次数

预期“权限”实例,得到...权限实例?

我尝试为自定义用户类型编写数据迁移代码,但是当我尝试应用迁移时,我得到了这个:

TypeError: 'Permission' instance expected, got <Permission: my_app | Some Text | Can add some_model>
Run Code Online (Sandbox Code Playgroud)

对我来说看起来很奇怪。那不是 Permission 实例吗?这是我的自定义用户模型:

class Employee(AbstractUser):
    middle_name = models.CharField(max_length=60, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

这是迁移中的一段代码,它引发了这个错误(我猜是这样):

for user in User.objects.all():
    employee = orm.Employee.objects.create(
    id=user.id,
    username=user.username,
    first_name=user.first_name,
    last_name=user.last_name,
    password=user.password,
    email=user.email,

    is_active=user.is_active,
    is_superuser=user.is_superuser,
    last_login=user.last_login,
    date_joined=user.date_joined,
    )
    for perm in user.user_permissions.all():
        employee.user_permissions.add(perm)
Run Code Online (Sandbox Code Playgroud)

python django django-models django-south

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

400错误的请求:SSL证书错误

当我尝试使用此命令获取带有客户端密钥和证书的页面时,出现此错误:

curl -v -s --key /home/dmitry/Downloads/client_cert/client.mysite.key --cert /home/dmitry/Downloads/client_cert/client.mysite.crt https://mysite.com/api/login/
Run Code Online (Sandbox Code Playgroud)

这是我在nginx日志中看到的内容:

2014/12/08 06:30:55 [crit] 13087#0: *404 SSL_do_handshake() failed (SSL: error:14094085:SSL routines:SSL3_READ_BYTES:ccs received early) while SSL handshaking, client: xxx.xxx.xxx.xxx, server: 0.0.0.0:443
Run Code Online (Sandbox Code Playgroud)

这是我的nginx.conf的一部分:

server {
    listen  443 ssl;

    ssl_certificate     /home/mysite/conf/dev/ssl/com.mysite.crt;
    ssl_certificate_key /home/mysite/conf/dev/ssl/com.mysite.key;
    ssl_client_certificate /home/mysite/conf/dev/ssl/com.mysite.crt;
    ssl_verify_client optional; 
    ssl_protocols       SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    server_name   mysite.com www.mysite.com;
    access_log    /home/mysite/logs/nginx_access.log;
    error_log     /home/mysite/logs/nginx_error.log;

    location /api/{
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_set_header SSL-client-serial $ssl_client_serial;
        proxy_set_header SSL-client-dn $ssl_client_s_dn;
        proxy_set_header SSL-client-verify $ssl_client_verify;

        if ($ssl_client_verify != SUCCESS) …
Run Code Online (Sandbox Code Playgroud)

ssl openssl nginx

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

如何更改ItemLoader的选择器

我正在尝试使用ItemLoader从多个页面解析数据来填充项目.但正如我现在所看到的,我无法更改初始化ItemLoader时使用的选择器.和文档说,关于选择属性:

选择

Selector对象从中提取数据.它可以是构造函数中给出的选择器,也可以是使用default_selector_class从构造函数中给出的响应创建的.此属性是只读的.

这是示例代码:

def parse(self, response):
    sel = Selector(response)
    videos = sel.xpath('//div[@class="video"]')

    for video in videos:
        loader = ItemLoader(VideoItem(), videos)
        loader.add_xpath('original_title', './/u/text()')
        loader.add_xpath('original_id', './/a[@class="hRotator"]/@href', re=r'movies/(\d+)/.+\.html')

        try:
            url = video.xpath('.//a[@class="hRotator"]/@href').extract()[0]
            request = Request(url,
                      callback=self.parse_video_page)
        except IndexError:
            pass

        request.meta['loader'] = loader
        yield request

    pages = sel.xpath('//div[@class="pager"]//a/@href').extract()
    for page in pages:
        url = urlparse.urljoin('http://www.mysite.com/', page)
        request = Request(url, callback=self.parse)
        yield request

def parse_video_page(self, response):
    loader = response.meta['loader']
    sel = Selector(response)

    loader.add_xpath('original_description', '//*[@id="videoInfo"]//td[@class="desc"]/h2/text()')
    loader.add_xpath('duration', '//*[@id="video-info"]/div[2]/text()')
    loader.add_xpath('tags', '//*[@id="tags"]//a/text()')

    item = loader.load_item()

    return …
Run Code Online (Sandbox Code Playgroud)

python scrapy

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

Ranlib没找到

我正在尝试交叉编译gst-ti-pluginarm设备但是当我做make installlibtool时返回错误:

../libtool: line 1085: arm-none-linux-gnueabi-ranlib: command not found
Run Code Online (Sandbox Code Playgroud)

这里的问题是,这个工具可从PATH,当我从控制台尝试它,它工作正常.

可能有什么不对?我使用CodeSourcery工具链.

embedded makefile cross-compiling libtool embedded-linux

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

Selenium 中的轮换代理

我使用 Selenium webdriver for Firefox with Scrapy,现在我需要动态更改代理,但到目前为止我在文档中发现的是,当我实例化 webdriver 本身时,我可以在配置文件中指定代理。所以这意味着我不能动态更改代理?

有没有办法做到这一点?

python firefox selenium scrapy selenium-webdriver

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

性感有条件规则吗?

有没有办法用妖娆来定义条件规则?

这是我的架构:

from voluptuous import Schema, All, Any

schema = Schema({
    'resolution': All(str, Any('1920x1080', '1280x720')),
    'bitrate': 20,
})
Run Code Online (Sandbox Code Playgroud)

没关系,但现在我想根据分辨率值验证比特率值.如果我有1920x1080分辨率,那么我需要保证比特率是这些值之一:20,16,12,8; 当它的1280x720时候比特率应该是以下之一:10,8,6,4.

我怎样才能做到这一点?有项目的github页面的信息,但我找不到我的情况.

python validation voluptuous

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

SECRET_KEY设置不能为空

我的设置文件夹中有三个文件:

  • base.py
  • development.py
  • production.py

我把这行放在我的wsgi.py文件中:

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

但当我运行gunicorn myproj.wsgi:application并尝试在浏览器中加载应用程序时,我得到:

ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Run Code Online (Sandbox Code Playgroud)

我绝对有SECRET_KEYbase.pydevelopment.py我有这样一行:

from base import *
Run Code Online (Sandbox Code Playgroud)

我已经更新manage.py并指定了新的设置文件,只是为了测试它是否runserver有效并且有效.

更新: 现在我投入SECRET_KEYdevelopment.py.当我运行gunicorn myproj.wsgi:application --settings 'myproj.settings.development'错误仍然存​​在.

python django gunicorn

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