当我运行测试时,我在数据库初始化期间遇到此错误:
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)
那么我该怎么做才能解决这个问题呢?
我想使用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吗?
有没有办法显示当前光标位置或类似的东西?我有动作链,应该点击某个对象上的确切点,但我想我已经选错了坐标.我使用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) 这是我使用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/上调用,则递归下载有效.
我有一个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) 有时我的网络服务器会停止响应。
我发现此时 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 个工作线程应该没问题。
我尝试为自定义用户类型编写数据迁移代码,但是当我尝试应用迁移时,我得到了这个:
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) 当我尝试使用此命令获取带有客户端密钥和证书的页面时,出现此错误:
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) 我正在尝试使用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) 我正在尝试交叉编译gst-ti-pluginarm设备但是当我做make installlibtool时返回错误:
../libtool: line 1085: arm-none-linux-gnueabi-ranlib: command not found
Run Code Online (Sandbox Code Playgroud)
这里的问题是,这个工具可从PATH,当我从控制台尝试它,它工作正常.
可能有什么不对?我使用CodeSourcery工具链.
我使用 Selenium webdriver for Firefox with Scrapy,现在我需要动态更改代理,但到目前为止我在文档中发现的是,当我实例化 webdriver 本身时,我可以在配置文件中指定代理。所以这意味着我不能动态更改代理?
有没有办法做到这一点?
有没有办法用妖娆来定义条件规则?
这是我的架构:
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页面的信息,但我找不到我的情况.
我的设置文件夹中有三个文件:
我把这行放在我的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_KEY在base.py和development.py我有这样一行:
from base import *
Run Code Online (Sandbox Code Playgroud)
我已经更新manage.py并指定了新的设置文件,只是为了测试它是否runserver有效并且有效.
更新:
现在我投入SECRET_KEY了development.py.当我运行gunicorn myproj.wsgi:application --settings 'myproj.settings.development'错误仍然存在.