我创建了一个引用http://django-rest-framework.org/api-guide/exceptions.html的自定义异常.
请知道我有自己的身份验证后端.因此我没有使用rest_framework的身份验证模块.
对于身份验证错误,我想将"WWW-Authenticate:Token"标头添加到从异常发送的响应中.
任何想法都会非常有帮助.
更新:
谢谢@Pathétique,这就是我最终要做的事情.
- 有一个名为BaseView的基础视图类.
- 在我的案例'WWW-Authenticate'中覆盖handle_exception方法来设置适当的标题.
这是代码:
class BaseView(APIView):
def handle_exception(self, exc):
if isinstance(exc, MYEXCEPTION):
self.headers['WWW-Authenticate'] = "Token"
return Response({'detail': exc.detail,
status=exc.status_code, exception=True)
Run Code Online (Sandbox Code Playgroud)
你的意见?
假设我有一个像这样的pandas数据帧:
cat val
0 a 1
1 a 6
2 a 12
3 b 2
4 b 5
5 b 11
6 c 4
7 c 22
Run Code Online (Sandbox Code Playgroud)
我想知道,对于每个类别('cat'的每个值),值最接近给定值的位置是什么,比如说5.5.我可以减去我的目标值并取绝对值,给我这样的东西:
cat val val_delt
0 a 1 4.5
1 a 6 0.5
2 a 12 6.5
3 b 2 3.5
4 b 5 0.5
5 b 11 5.5
6 c 4 1.5
7 c 22 16.5
Run Code Online (Sandbox Code Playgroud)
但是我不知道下一步要去哪里.我的第一个想法是使用argmin()和groupby(),但这给出了一个错误:
In [375]: df.groupby('cat').val_delt.argmin()
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-375-a2c3dbc43c50> in <module>()
----> 1 df.groupby('cat').val_delt.argmin() …Run Code Online (Sandbox Code Playgroud) 使用序列化程序中的开箱即用字段,验证错误消息如下所示:
{
"product": [
"This field must be unique."
],
"price": [
"This field is required."
]
}
Run Code Online (Sandbox Code Playgroud)
但是,对于我正在编写的API,我想为每个失败的验证提供唯一的错误代码,以便客户端可以以编程方式响应验证错误,或者可以在UI中提供自己的自定义消息.理想情况下,错误json看起来像这样:
{
"product": [
{
"code": "unique",
"message": "This field must be unique."
}
],
"price": [
{
"code": "required",
"message": "This field is required."
}
]
}
Run Code Online (Sandbox Code Playgroud)
使用ValidationErrors的当前方法使得这相当困难.查看代码,似乎目前不支持此类错误报告.但是,我正在寻找一种方法来覆盖错误处理以适应此模型.
我试图了解 Django 的 ModelForm 保存方法和直接保存 Model 实例之间的区别。
个人觉得直接保存更直观,数据保存时间显示更清晰。另外,如果我需要在保存之前修改实例,那么我必须使用模型保存方法,正如 Django 文档在此处解释的那样。
那么,一旦表单被验证,有什么区别呢?如果表单使用多个模型或其他一些更复杂的用例,会有什么不同吗?
如果重要的话,我正在使用 Django 1.4 版。下面是一些代码,显示了我如何倾向于保存经过验证的表单数据。
提前致谢!
# models.py
class Project(models.Model):
project_name = models.CharField(unique=True, null=False, blank=False)
# views.py
def add_project(request):
if request.method == 'POST':
project = Project()
form = ProjectForm(request.POST, instance=project)
if form.is_valid():
project.save() ### <-- project.save() vs form.save() ###
return HttpResponseRedirect(reverse('view_project', args=(project.id,)))
else:
form = ProjectForm()
return render_to_response(
'add_project.html',
{
'form': form,
},
context_instance=RequestContext(request)
)
# forms.py
class ProjectForm(ModelForm):
class Meta:
model = Project
Run Code Online (Sandbox Code Playgroud) 我已经定义了模型,其中一个文件有定义:
REPEAT = (
('day', 'Daily'),
('week', 'Weekly'),
)
repeats = models.CharField('Repeat', default='day', max_length=5, choices=REPEAT)
Run Code Online (Sandbox Code Playgroud)
我还定义了相关的管理模型,它负责在面板中显示我的主模型。
是否可以根据重复字段中的选择在管理面板中显示和隐藏某些字段?例如在风景中,当用户选择“每日”时,某些字段不是必需的,我想隐藏它们。我将不胜感激任何建议或提示。
我正在$resource使用查询从服务器检索数据.服务器返回一个对象数组,我存储在stuklijst中.我可以通过循环遍历数组并使用$ save将数组的每个项目发送回服务器,将stuklijst的(更新的)内容发送回服务器.我现在想要一次性将所有项目(整个stuklijst)发送到服务器,而不使用循环.
在stuklijst上尝试$ save时,Angular会抛出"destination.push不是函数"错误.如何实现这一目标$resource?
这是代码:
服务:
var stukModule = angular.module('stuklijstServices', ['ngResource'])
stukModule.factory('Stuklijsten', function($resource){
return $resource('rest/stuklijsten/:stuklijstID', {} );
});
Run Code Online (Sandbox Code Playgroud)
控制器:
//Get the data from server
$scope.stuklijst = Stuklijsten.query({stuklijstID: $routeParams.stuklijstID});
//See below for sample of data returned by server
//Users can update the data and request a save using saveStuklijst
//Send them back to server (using saveStuklijst(Stuklijst))
$scope.saveStuklijst = function(lijst) {
//sending items from stuklijst one by one …Run Code Online (Sandbox Code Playgroud) 我已经使用Django REST Framework已有很长时间了,但是遇到一种情况,我需要在API视图中检索除已知关系以外的所有内容。再次浏览文档后,我看不到任何内置的机制来实现此目的。我意识到我可以get_queryset()在ListView中覆盖并解析自定义URL查询参数,然后进行过滤,但是我很好奇是否还有其他人有更优雅的解决方案?
更新资料
经过更多研究后,这似乎更多是django-filter问题,我找不到提及任何排除功能的信息。我确实发现了这一点:
https://bitbucket.org/mjs7231/django-rest-framework-filtering
确实提供了从结果中排除的值。
我使用onspy在Python中递归运行以下查询:
SELECT ?c WHERE {
?c rdfs:subClassOf ?restriction .
?restriction owl:onProperty :has_part ; owl:someValuesFrom ?p .
VALUES ?p { <some_uri> }
}
Run Code Online (Sandbox Code Playgroud)
基本上,我获取从中返回的值并重新运行查询以遵循本体中“具有部分”关系的层次结构。我希望通过向查询本身添加递归来避免进行多个 SPARQL 查询。我知道如何使用单个三元组执行此操作rdfs:subClassOf*,但无法弄清楚组合两个三元组的语法:
?c rdfs:subClassOf ?restriction .
?restriction owl:onProperty :has_part ; owl:someValuesFrom ?p .
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我正在研究流式细胞仪.我想使用python解析.fcs文件.我在互联网上研究过,有一个模块,fcm但是对于linux操作系统,我正在开发Windows.
我想知道如何使用python在Windows中解析.fcs文件?
如果有人知道如何fcm在Windows中使用,请让我知道.
Python建议在re模块中定义正则表达式时使用原始字符串.从Python文档:
正则表达式使用反斜杠字符('\')来表示特殊形式或允许使用特殊字符而不调用它们的特殊含义.这与Python在字符串文字中用于相同目的的相同字符的使用相冲突; 例如,要匹配文字反斜杠,可能必须将'\\'写为模式字符串,因为正则表达式必须为\,并且每个反斜杠必须在常规Python字符串文字中表示为\.
但是,在许多情况下,这不是必需的,无论是否使用原始字符串,都会得到相同的结果:
$ ipython
In [1]: import re
In [2]: m = re.search("\s(\d)\s", "a 3 c")
In [3]: m.groups()
Out[3]: ('3',)
In [4]: m = re.search(r"\s(\d)\s", "a 3 c")
In [5]: m.groups()
Out[5]: ('3',)
Run Code Online (Sandbox Code Playgroud)
然而,在某些情况下情况并非如此:
In [6]: m = re.search("\s(.)\1\s", "a 33 c")
In [7]: m.groups()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-12-84a8d9c174e2> in <module>()
----> 1 m.groups()
AttributeError: 'NoneType' object has no attribute 'groups'
In [8]: m = re.search(r"\s(.)\1\s", "a 33 c") …Run Code Online (Sandbox Code Playgroud)