我有以下方法:
def _attempt(actor):
if actor.__class__ != User:
raise TypeError
Run Code Online (Sandbox Code Playgroud)
从视图中调用:
self.object.attempt(self.request.user)
Run Code Online (Sandbox Code Playgroud)
如您所见,_attempt方法期望actor是类型django.contrib.auth.models.User,但是对象看起来是类型django.utils.functional.SimpleLazyObject.为什么会这样?更重要的是,如何将LazyObject(显然是一种User对象的包装器)转换为User对象?
有关详细信息,Request.user请访问:https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.user此文档似乎表明request.user应该是一个User对象......
======进行后期编辑=====
我现在有以下方法:
def _attempt(obj, action, actor, msg):
actor.is_authenticated()
if isinstance(actor, LazyObject):
print type(actor)
Run Code Online (Sandbox Code Playgroud)
我正在传递一个用户,但if条件仍然是真的,演员仍然是LazyObject.为什么会这样?
我有以下S3桶:http://my-bucket.s3-website-eu-west-1.amazonaws.com/
我已根据http://docs.amazonwebservices.com/AmazonS3/latest/dev/cors.html添加了CORS配置:
<CORSConfiguration>
<CORSRule>
<AllowedHeader>x-requested-with</AllowedHeader>
<AllowedHeader>*</AllowedHeader>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
<CORSRule>
<AllowedOrigin>http://*.test.com</AllowedOrigin>
<AllowedMethod>POST</AllowedMethod>
</CORSRule>
</CORSConfiguration>
Run Code Online (Sandbox Code Playgroud)
我使用jquery向我的存储桶发出一个AJAX Post请求(注意,origin是jd.test.com:8000):
$.ajax('http://my-bucket.s3-website-eu-west-1.amazonaws.com/', {
type: "POST",
data: $(":hidden", self).serializeArray(),
files: $(":file", self),
statusCode: {
204: function(){
//do something
}
}
});
Run Code Online (Sandbox Code Playgroud)
在提出请求后,我的chrome控制台抱怨:
XMLHttpRequest cannot load http://my-bucket.s3-website-eu-west-1.amazonaws.com/. Origin http://www.jd.test.com:8000 is not allowed by Access-Control-Allow-Origin.
Run Code Online (Sandbox Code Playgroud)
任何关于为什么没有提出POST请求的帮助将不胜感激.
谢谢 !
我有一个UITableView自定义单元格包含UIStackView.作为准备新单元格的一部分,当表视图通过其cellForRowAtIndexPath方法添加新单元格时,它会实例化并添加任何集合视图(类型MultaCollectionView)以及任何UILabel需要添加到单元格的堆栈视图中的单元格(单元格可能包含各种集合视图) ).理论上,堆栈视图包含一系列标签和集合视图.
虽然标签显示正确,但是在运行时不显示集合视图.我试图显示的集合视图在.xibInterface Builder文档中定义.
numberOfSectionsInCollectionView调用Collection View的方法,但是collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath)从不调用该方法.
为什么collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath)从不调用该方法?为什么不在堆栈视图中呈现集合视图?
import UIKit
private let reuseIdentifier = "Cell"
class MultaCollectionView: UICollectionView, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UICollectionViewDelegate {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.delegate = self
self.dataSource = self
}
class func instanceFromNib() -> UICollectionView {
return UINib(nibName: "multas", bundle: nil).instantiateWithOwner(nil, options: nil)[0] as! UICollectionView
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个转换let形式表达式的函数:
Run Code Online (Sandbox Code Playgroud)(let ((var1 exp1) ... (varn expn)) body)
转换lambda为以下形式的(等效)表达式:
((lambda (var1 ... varn) body) exp1 ... expn)
我发现该问题的大多数解决方案似乎都是错误的,有人可以确认是这种情况吗?
;; let expression
(define (let-vars expr) (map car (cadr expr)))
(define (let-inits expr) (map cadr (cadr expr)))
(define (let-body expr) (cddr expr))
(define (let->combination expr)
(cons (make-lambda (let-vars expr) (let-body expr))
(let-inits expr)))
Run Code Online (Sandbox Code Playgroud)
我相信let->combination会返回这种形式的清单:
((lambda (var1 ... varn) body) (exp1 ... expn))
Run Code Online (Sandbox Code Playgroud)
但是,我认为它应该返回的是以下形式的列表:
((lambda (var1 ... varn) body) exp1 ... …