尝试psycopg2通过Pip在Mavericks 10.9上安装时出现以下错误:
clang: error: unknown argument: '-mno-fused-madd' [-Wunused-command-line-argument-hard-error-in-future]
Run Code Online (Sandbox Code Playgroud)
不确定如何继续并在此处和其他地方搜索此特定错误.任何帮助深表感谢!
以下是pip的完整输出:
$ pip install psycopg2
Downloading/unpacking psycopg2
Downloading psycopg2-2.5.2.tar.gz (685kB): 685kB downloaded
Running setup.py (path:/private/var/folders/0z/ljjwsjmn4v9_zwm81vhxj69m0000gn/T/pip_build_tino/psycopg2/setup.py) egg_info for package psycopg2
Installing collected packages: psycopg2
Running setup.py install for psycopg2
building 'psycopg2._psycopg' extension
cc -fno-strict-aliasing -fno-common -dynamic -arch x86_64 -arch i386 -g -Os -pipe -fno-common -fno-strict-aliasing -fwrapv -mno-fused-madd -DENABLE_DTRACE -DMACOSX -DNDEBUG -Wall -Wstrict-prototypes -Wshorten-64-to-32 -DNDEBUG -g -fwrapv -Os -Wall -Wstrict-prototypes -DENABLE_DTRACE -arch x86_64 -arch i386 -pipe -DPSYCOPG_DEFAULT_PYDATETIME=1 -DPSYCOPG_VERSION="2.5.2 (dt dec pq3 …Run Code Online (Sandbox Code Playgroud) 对于发生在这个问题上的任何人:此问题似乎已在随后的Bootstrap更新中得到解决.您现在可以下载自定义Bootstrap 3版本,使用该@grid-columns设置指定所需列的数量.
http://getbootstrap.com/customize/
我正在尝试自定义Bootstrap 3网格系统以使用24列而不是默认的12列.
正如在这里的一些答案中所建议的那样,我试图通过修改@gridColumns,@ gridColumnWidth和@gridGutterWidth变量来使用Bootstrap的"自定义和下载"页面来自定义资产.
但Bootstrap 3似乎已经废除了这些变量:
Bootstrap 3自定义页面(例如,没有@gridColumns):http://getbootstrap.com/customize/
Bootstrap 2自定义页面(例如,@ gridColumns选项可用):http://getbootstrap.com/2.3.2/customize.html
在Bootstrap 3中实现这一目标的推荐方法是什么?非常感谢!
题:
我正在尝试访问中间件层中的视图实例的属性.
例如,给定一个基于类的视图,如下所示:
# views.py
class MyView(View):
my_attribute = 'something'
Run Code Online (Sandbox Code Playgroud)
我希望能够my_attribute通过这样的方式处理中间件:
# middleware.py
def process_view(self, request, view_func, view_args, view_kwargs):
my_attribute = request.view.my_attribute
Run Code Online (Sandbox Code Playgroud)
当然,这不起作用,因为Django不会通过请求对象公开视图实例.有没有办法实现这一目标?
谢谢!
我的第一次尝试:
我最初认为该process_view()方法可能是一个很好的地方.不幸的是,view_func它接收的参数包含一个函数 - 输出MyView.as_view()- 而不是视图实例本身.来自Django文档:
process_view(self,request,view_func,view_args,view_kwargs)
... view_func是Django即将使用的Python函数.(它是实际的函数对象,而不是函数的名称作为字符串.)...
我的第二次尝试:
process_template_response()方法中提供了视图实例的句柄,但它非常笨拙,而且,无论如何,我希望能够my_attribute在中间件堆栈的早期阶段使用它.但这确实有效:
def process_template_response(self, request, response):
my_attribute = response.context_data['view'].my_attribute
Run Code Online (Sandbox Code Playgroud) 据我所知,在自定义方法中访问命名 url 参数的标准方法get_context_data()是通过self.kwargs.
然而,self.kwargs语法变得很尴尬,尤其是在处理大量参数时。因此,我一直在每个方法的顶部采用类似的方法get_context_data()——只是为了获得易于处理的局部变量:
def get_context_data(self, **kwargs):
var1, var2, var3, var4, var5 = [self.kwargs[x] for x in ['var1', 'var2', 'var3', 'var4', 'var5']]
# do stuff with var1, var2, ...
# instead of self.kwargs['var1'], self.kwargs['var2'], ...
Run Code Online (Sandbox Code Playgroud)
这是丑陋且痛苦的,但它最终使事情变得更容易使用和阅读。
有没有一种简单的方法来清理它并将命名参数放入局部变量中?缺少重写get()方法、子类化 Django 的通用视图等?我怀疑我在这里错过了一些非常基本的、基本的 python 概念。
以下是调用的默认get()方法,get_context_data()以防在此处引用有帮助:
def get(self, request, *args, **kwargs):
context = self.get_context_data(**kwargs)
return self.render_to_response(context)
Run Code Online (Sandbox Code Playgroud)
更新:
我的错误,调用get()方法实际上如下(FormView在这种情况下泛型正在被子类化)。不幸的是,传入的 kwargsget_context_data()与以下不同self.kwargs:
def get(self, request, …Run Code Online (Sandbox Code Playgroud) 我有一个非常标准的基本社交应用程序-状态更新(即帖子),每个帖子有多个评论。
给定以下简化的模型,是否有可能使用Django的ORM,高效地检索所有帖子以及与每个帖子相关的最新两个评论,而无需执行N + 1查询?(也就是说,无需执行单独的查询即可获取页面上每个帖子的最新评论。)
class Post(models.Model):
title = models.CharField(max_length=255)
text = models.TextField()
class Comment(models.Model):
text = models.TextField()
post = models.ForeignKey(Post, related_name='comments')
class Meta:
ordering = ['-pk']
Run Code Online (Sandbox Code Playgroud)
Post.objects.prefetch_related('comments').all() 提取所有帖子和评论,但我只想在每个帖子中检索有限数量的评论。
更新:
我了解,如果可以使用Django的ORM完全完成此操作,则可能必须使用的某些版本来完成prefetch_related。只要我避免每页进行N + 1个查询,完全可以进行多个查询。
在Django中处理此问题的典型/推荐方式是什么?
更新2:
使用Django ORM进行简单查询似乎没有直接,简单的方法来有效地完成此操作。以下答案提供了许多有用的解决方案/方法/解决方法,包括:
我不知道哪个标记为正确的,因为我还没有机会尝试所有这些方法-但是我将赏金授予Hynekcer,因为他提出了许多选择。
更新3:
我最终使用了@ user1583799的解决方案。
在我的Django应用程序中,我要包装在事务中的第一个数据库操作可能发生在框架的任何级别上-可能在视图,管理器方法或模型方法中。
到目前为止,我的实践一直是用标记最先发生数据库写访问的最外层方法@transaction.atomic。但是我发现要跟踪它很痛苦。当我重构或移动事物时,最外面的方法经常更改。处理此问题的最佳方法是什么?
这是我正在考虑的一些选项,当然我可以接受其他建议。
我是否应该总是@transaction.atomic在视图级别声明并完成它?
@transaction.atomic
def view_method():
# database operation
manager_method()
def manager_method():
# database operation
model_method()
def model_method():
# database operation
another_model_method()
def another_model_method():
# database operation
Run Code Online (Sandbox Code Playgroud)
还是应该包装所有导致多种数据库操作的方法?
@transaction.atomic
def view_method():
# database operation
manager_method()
@transaction.atomic(savepoint=False)
def manager_method():
# database operation
model_method()
@transaction.atomic(savepoint=False)
def model_method():
# database operation
another_model_method()
def another_model_method():
# database operation
Run Code Online (Sandbox Code Playgroud)
还是应该@transaction.atomic只声明属于应用程序外部API一部分的方法?例如,在这里,我希望model_method()也可以从脚本或管理界面等调用它。
@transaction.atomic
def view_method():
# database operation
manager_method()
def manager_method():
# database operation …Run Code Online (Sandbox Code Playgroud) 我有相当多的自定义模板标签可以执行各种功能,包括:
所有这些函数都驻留在一个文件中:app/templatetags/custom_tags.py. 当我想在模板中使用这些标签之一时,我使用{% load custom_tags %}.
但是,在任何给定模板中实际上只使用了一小部分可用标签。 换句话说,所有这些函数都被“加载”到模板中,但在特定的 Web 请求中只有少数函数被调用。
{% load custom_tags %}对应用程序中其他地方的后续调用不会导致任何额外的开销?如果这个问题中有不正确的假设或前提,我深表歉意。我很想更好地理解导入 python 代码的含义,或者特别是在 Django 环境中。