我有一个函数,myfunc并希望将bind它作为一个特定的this参数和其他参数bind作为单个数组,而不是参数列表(因为我将参数列表作为函数的参数,执行此代码).为此目的,我使用apply上bind,如下所示:
var myfunc = function(arg1, arg2){
alert("this = " + this + ", arg1 = " + arg1 + ", arg2 = " + arg2);
}
var bindedMyfunc = myfunc.bind.apply("mythis", ["param1", "param2"]);
bindedMufunc();
Run Code Online (Sandbox Code Playgroud)
这导致了Uncaught TypeError: Bind must be called on a function.
我究竟做错了什么?你能否详细解释一下,当我运行这段代码时会发生什么,导致现实似乎与我的看法相矛盾?
答案摘要:
似乎它bind本身有自己的this参数,它是函数,它被调用.例如,当你说myfunc.bind(args),bind的this是myfunc.
通过调用apply上bind我已经mistakingly分配bind的这'mythis’,这是不是一个功能,bind不能在叫. …
我有一个2级深度的嵌套序列化器:
class ToolSerialier(serializers.ModelSerializer):
input = ToolInputSerializer()
class Meta:
model = Tool
fields = ('docker_image', 'input')
class ToolInputSerializer(serializers.ModelSerializer):
datafile_set = ToolInputDatafileSerializer(many=True)
class Meta:
model = ToolInput
fields = ('datafile_set', )
class ToolInputDatafileSerializer(serializers.ModelSerializer):
class Meta:
model = ToolInputDatafile
fields = ('name', 'file')
Run Code Online (Sandbox Code Playgroud)
和各自的型号:
class Tool(models.Model):
docker_image = models.CharField(max_length=255, null=True, blank=True)
class ToolInput(models.Model):
tool = models.ForeignKey(Tool, related_name="input")
class ToolInputDatafile(models.Model):
tool_input = models.ForeignKey(ToolInput, related_name="datafile_set")
name = models.CharField(max_length=255)
file = jsonfield.JSONField()
Run Code Online (Sandbox Code Playgroud)
现在,当我向ToolSerializers列表端点发送GET请求时,收到一条错误消息:
AttributeError at /api/tool/
Got AttributeError when attempting to get a value for field …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 uWSGI 用作独立的 http 服务器,而不是 uwsgi 服务器。
这是我的配置文件mysite.ini:
[uwsgi]
chdir = /srv/workflows
module = workflows.wsgi:application
plugin = python
# We can receive connections either via http or from frontend via uwsgi socket
# http:
http = 0.0.0.0:8000
# uwsgi:
#socket = 0.0.0.0:8000
#chmod-socket = 664
vacuum = true
master = true
need-app = true
processes = 10
harakiri = 20
max-requests = 5000
Run Code Online (Sandbox Code Playgroud)
所以,我使用了 http 选项并注释掉了socket和chmod-socket选项。
为了回应 uWSGI 诅咒:
uWSGI: --s/--socket option is missing …Run Code Online (Sandbox Code Playgroud) 我用nginx用docker-compose,并希望docker-compose传递SERVER_NAME给nginx作为环境变量.我创建了以下nginx配置文件:
myconf.conf:
# Environment variables are used to dynamically set SERVER_NAME
# from docker-defined environment variable. This logic is stolen from:
#
# https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html
# https://github.com/wantedly/nginx-image-server/blob/master/files/nginx.conf
env SERVER_NAME;
upstream django {
server workflows-django:8000;
}
server {
listen 80;
perl_set $server_name_from_env 'sub { return $ENV{"SERVER_NAME"}; }';
server_name $server_name_from_env;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
perl_set $server_name_from_env 'sub { return $ENV{"SERVER_NAME"}; }';
server_name $server_name_from_env;
ssl_certificate /etc/ssl/private/bostongene.crt;
ssl_certificate_key /etc/ssl/private/bostongene.key;
charset …Run Code Online (Sandbox Code Playgroud) 这是一段代码,它进入一个无限递归循环,它只包含__repr__函数,似乎在调用自身.但我真的看不到它是怎么称呼它自己的.而且,我甚至无法理解,它是如何被称为:
class MyList(list): #this is storage for MyDict objects
def __init__(self):
super(MyList, self).__init__()
class MyDict(dict):
def __init__(self, mylist):
self.mylist = mylist #mydict remembers mylist, to which it belongs
def __hash__(self):
return id(self)
def __eq__(self, other):
return self is other
def __repr__(self):
return str(self.mylist.index(self)) #!!!this is the crazy repr, going into recursion
def __str__(self):
return str(self.__repr__())
mylist = MyList()
mydict = MyDict(mylist)
mydict.update({1:2})
print str(mylist.index(mydict)) #here we die :(
Run Code Online (Sandbox Code Playgroud)
执行此代码会导致:
Traceback (most recent call last):
File "test_analogue.py", line 20, …Run Code Online (Sandbox Code Playgroud) 我将django从1.7升级到1.9,通过更换软件包安装在系统(Debian 8)中,通过apt-get软件包安装,通过安装pip.
所以,我jsonfield从pip 安装了包而不是apt的旧版本python-django-jsonfield并尝试运行unittests.
所有我的jsonfields,定义为jsonfield.JSONField(),使消息测试失败:
ValidationError: [u'Enter valid JSON']
Run Code Online (Sandbox Code Playgroud)
一切都运转良好.任何想法,改变了什么?
我有一个带有QTabWidget的简单示例PyQt应用程序.我无法将QTabWidget的tabCloseRequested信号连接到插槽,以便正确关闭选项卡:
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class Application(object):
def __init__(self):
app = QApplication(sys.argv)
self.window = QMainWindow()
self.notebook = QTabWidget()
self.notebook.tabBar().setTabsClosable(True)
self.notebook.tabBar().setMovable(True)
self.notebook.tabCloseRequested.connect(self.close_handler)
self.window.setCentralWidget(self.notebook)
page1 = QWidget()
self.notebook.addTab(page1, "page1")
page2 = QWidget()
self.notebook.addTab(page2, "page2")
self.window.show()
sys.exit(app.exec_())
def close_handler(self, index):
print "close_handler called, index = %s" % index
self.notebook.removeTab(index)
if __name__ == "__main__":
app = Application()
Run Code Online (Sandbox Code Playgroud)
当我点击关闭按钮时,没有任何反应.甚至不应该调用打印!我究竟做错了什么?
我正在尝试从 github 克隆一个 python 包,然后将其安装在本地,pip -e如下所示:
RUN git clone https://github.com/st4lk/django-rest-social-auth.git
RUN pip install -e django-rest-social-auth
Run Code Online (Sandbox Code Playgroud)
但我收到错误消息:
Step 6 : RUN pip install -e django-rest-social-auth
---> Running in 8943e688573f
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
load_entry_point('pip==1.5.6', 'console_scripts', 'pip')()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 356, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2476, in load_entry_point
return ep.load()
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2190, in load
['__name__'])
File "/usr/lib/python2.7/dist-packages/pip/__init__.py", line 74, in <module>
from pip.vcs import git, mercurial, subversion, …Run Code Online (Sandbox Code Playgroud) 我mongo_db在 settings.py 中定义了一个自定义变量:
# connect to test database for tests and real database otherwise
if is_test():
mongo_db = mongoengine.connect(db='test-workflows', host='workflows-mongo')
else:
mongo_db = mongoengine.connect(db='workflows', host='workflows-mongo')
Run Code Online (Sandbox Code Playgroud)
现在,我试图从tests.py(或从python manage.py shell)导入它,但都没有成功:
from django.conf import settings
settings.mongo_db
AttributeError: 'Settings' object has no attribute 'mongo_db'
Run Code Online (Sandbox Code Playgroud)
怎么了?
更新:
IIRC,Djangodjango.conf.settings通过django.conf.global_settings使用在settings.py.
因此,可能有问题的from django.conf import settings; settings.mongo_db是 Django 可能不会更新django.conf.settings为mongo_db,因为它不在默认选项中。
此外,Django 文档说这django.conf.settings是一个object,而不是一个module,所以你不能说from django.conf.settings …