我想更改JSON,当发生验证错误时,rest_framework或django会返回.
我将使用我的一个视图作为示例,但我想更改所有视图的错误消息.所以,我想这个观点意味着登录用户,提供电子邮件和密码.如果这些是正确的,则返回access_token.
如果我只发布密码,则返回错误400:
{"email": ["This field is required."]}
Run Code Online (Sandbox Code Playgroud)
如果密码和电子邮件不匹配:
{"detail": ["Unable to log in with provided credentials."]}
Run Code Online (Sandbox Code Playgroud)
我想要的更像是:
{"errors": [{"field": "email", "message": "This field is required."}]}
{"errors": [{"non-field-error": "Unable to log in with provided credentials."}]}
Run Code Online (Sandbox Code Playgroud)
现在这是我的观点:
class OurLoginObtainAuthToken(APIView):
permission_classes = (AllowAny,)
serializer_class = serializers.AuthTokenSerializer
model = Token
def post(self, request):
serializer = self.serializer_class(data=request.DATA)
if serializer.is_valid():
#some magic
return Response(token)
return Response(serializers.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
我可以访问serializer.errors并更改它们,但看起来只能以这种方式访问字段错误,如何更改在序列化程序验证方法中创建的验证错误?
这是我的序列化程序(它与rest_framework.authtoken.serializers.AuthTokenSerializer是相同的序列化程序)但已编辑,因此身份验证不需要用户名但电子邮件:
class AuthTokenSerializer(serializers.Serializer):
email = serializers.CharField()
password = serializers.CharField() …Run Code Online (Sandbox Code Playgroud) 起初我不得不说这是我第一次接触angularjs和node.js所以这可能是一个愚蠢的问题,但我想学习使用angularjs所以我按照本教程https://docs.angularjs.org/教程和一切都按预期进行,直到我开始运行End End to End Tests部分.
当我运行此命令时:
npm run update-webdriver
Run Code Online (Sandbox Code Playgroud)
它说:
selenium standalone is up to date.
chromedriver is up to date.
Run Code Online (Sandbox Code Playgroud)
然后我打开本地服务器:
npm start
Run Code Online (Sandbox Code Playgroud)
在运行时我运行测试:
npm run protractor
Run Code Online (Sandbox Code Playgroud)
在我的终端中导致:o
直接使用ChromeDriver ...
[launcher]错误:在/home/qw/www/angular-phonecat/node_modules/protractor/selenium/chromedriver.exe找不到chromedriver
文件chromedriver.exe确实不存在(有chromedriver_2.10.zip),我真的不认为.exe文件应该在那里,考虑到我使用ubuntu 14.04(本教程应该是角度版本是1.4.0).
对于某些Windows版本,这是一个tuto吗?
任何人都可以帮助我(初学者可以理解的方式:))?
我正在使用 swagger-codegen-maven-plugin 从 OpenAPI 文件(OpenAPI 3.0.2)生成 Spring 接口
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.14</version>
Run Code Online (Sandbox Code Playgroud)
一个rest API的响应应该是PDF文件
components:
schemas:
contractFile:
type: string
format: binary
Run Code Online (Sandbox Code Playgroud)
生成的 Java REST 接口然后包含以下方法
default ResponseEntity<File> getContract(@ApiParam(value = "File to download",required=true) @PathVariable("uid") String uid) {
...
}
Run Code Online (Sandbox Code Playgroud)
File 类表示文件系统的路径,但我在文件系统上没有文件,只有 Java 内存中的字节,我不想将它们作为文件保存到磁盘。
我希望 getContract 从内存中的 Stream/bytes 返回一些 StreamResource 或其他一些文件表示。是否可以通过 swagger-codegen-maven-plugin 或其他一些选项来实现?
我有一个代表工作的类,一个代表描述工作的标签的类,然后我有一个类在它们之间建立关系(连接表),因此工作可以由多个标签描述:
class JobTag(models.Model):
job = models.ForeignKey(Job, unique=False, related_name='jobtags')
tag = models.ForeignKey(Tag, unique=False, related_name='Tag_For_Job')
created_time = models.DateTimeField(auto_now_add = True)
modified_time = models.DateTimeField(auto_now = True)
class Meta:
unique_together = ('job', 'tag',)
def __unicode__(self):
return 'Tag '+self.tag.name +' for job '+ self.job.name
Run Code Online (Sandbox Code Playgroud)
然后我有序列化程序:
class TagSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Tag
fields = ('url','name','badge_pic')
read_only_fields = ('name','badge_pic')
class JobTagSerializer(serializers.HyperlinkedModelSerializer):
tag = TagSerializer()
class Meta:
model = JobTag
fields = ('tag',)
depth=1
class JobSerializer(serializers.HyperlinkedModelSerializer):
jobtags=JobTagSerializer(many=True)
class Meta:
model = Job
fields = ('url','name', 'employer','jobtags','description')
read_only_fields …Run Code Online (Sandbox Code Playgroud) 有没有人知道怎么做?我创建了这个小提琴http://jsfiddle.net/matusko/2pctr9ok/3/,我想做的就是输入的行为与上面的div相同.
CSS:
.left {
float:left;
width:180px;
background-color:#ff0000;
}
.right {
width: 100%;
background-color:#00FF00;
display: block;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div>
<div class="left">
left
</div>
<div class="right">
right
</div>
</div>
<br/>
<div>
<div class="left">
left
</div>
<input type="text" placeholder="right" class="right"/>
</div>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么输入不像div那样,即使当专业检查员说它的显示是阻塞的.
我对sails很新,我试图在postgresql db中创建一个身份验证模式.
我有一个用户模型
module.exports = {
attributes: {
firstName: {
type: 'string'
},
lastName: {
type: 'string'
},
email: {
type: 'string',
required: true,
unique: true
},
password: {
type: 'string',
required: true
},
authTokens: {
collection: 'authToken',
via: 'owner'
}
}
}
Run Code Online (Sandbox Code Playgroud)
和用户注册/创建控制器
module.exports = {
create: function (req, res) {
sails.log.info("Message to be logged");
User.create(
{
email: req.body.email,
firstName: req.body.firstName,
lastName: req.body.lastName,
password: req.body.password
}
).exec(function (err) {
if (err) {
return res.status(400).send({err: err});
} else {
return …Run Code Online (Sandbox Code Playgroud)