PUT方法在django rest框架中不起作用。
模型。派克
class Profile(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30,blank=True)
对应视图
class ProfileDetailsView(APIView):
"""
Get, udpate, a user's profile
"""
template_name = 'users/profile.html'
form_class = UserProfileForm
authentication_classes = (SessionAuthentication,)
def get_object(self, pk):
try:
return Profile.objects.get(pk=pk)
except Profile.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
print "111111111111111111"
profile = self.get_object(pk)
serializer = UserProfileSerializer(profile)
return render(request, self.template_name, context=serializer.data)
def put(self, request, pk):
print "2222222222222222222"
当我请求页面(GET)时,它显示相应的细节(配置文件细节)。但是当我提交页面(PUT)时,它仍然转到get
部分,而不是put
。当我使用REST视图时,它工作得很好。问题出在网页视图(html)上。我错过了什么?感谢任何帮助
HTML页面
<form class="form-profile" >{% csrf_token %}
<div class="form-horizontal">
<div class="form-group">
<label class="col-sm-2 control-label">First name</label>
<div class="col-sm-10">
<input value="{{first_name}}" class="form-control" id="first_name" maxlength="255" name="first_name" placeholder="First name" required="required" type="text" />
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Last name</label>
<div class="col-sm-10">
<input value="{{last_name}}" class="form-control" id="last_name" maxlength="255" name="last_name" placeholder="First name" type="text" />
</div>
</div>
</div>
</form>
但是当我提交页面(PUT)时,它仍然会转到get部分而不是PUT部分
我认为标准HTML表单不能使用PUT
,它要么是GET
(默认值),要么是POST
。这里引用了HTML5规范:
method和formmethod内容属性是具有以下关键字和状态的枚举属性:
关键字get,映射到状态GET,指示HTTP GET方法。
关键字post,映射到状态post,指示HTTP post方法。
这些属性缺少的默认值是GET状态。
除此之外,如果要使用POST
,请在表格中指定它
<form class="form-profile" method="post">
我发现这篇文章,你可能喜欢读它:为什么HTML表单上没有PUT和DELETE方法?
当然,您可以使用JavaScript从表单收集数据并启动
PUT
请求,但这并不是您想要的标准HTML表单。
以下是一些可以向DRF发送PUT请求的方法
如何使用curl执行PUT请求
JavaScript REST客户端库
我正在使用演示APi(http://dummy.restapiexample.com/update) 我有一个响应类UpdateResponse 我有一个Api类和一个APIInterface 和对话框而不是主活动 在APIInterface中使用PUT方法有一个@path(id)和三个@fields(name、salary、age) 下面是UpdateResponse类代码 Api接口代码如下
所以我需要邮递员的文件。问题是我的API需要身份验证,所以我不能使用Swagger来测试它们。当我从控制器中删除授权并使用Swagger时,它会工作,但使用Postman时,它会返回以下错误。 请求的邮递员标题:
我试图将所有对Rails后端进行api调用的服务整合为一个。它看起来是这样的: POST和GET工作正常,但PUT给了我
我让troulbe通过jsp页面上的ajax函数将path参数输出到servlets doput方法。 我的使用Ajax的jsp页面: 我有get和post方法,因为它们在form action和method属性中以常规方式发送到servelt。 就我所知,Put和delete只能通过ajax或JQuery来完成,我似乎无法理解。 我已经在邮递员身上测试了这个方法,它非常有效。 我真的被困在这个问
这是我的模块信息: 这是我的父gradle构建文件: 这是我的客户端模块构建文件: 我正在尝试获取FXMLLoader的资源,但我根本无法让它工作。我已经挣扎了两个小时,现在我真的很绝望。我尝试了所有可能的文件名组合,每个可能的位置,但仍然返回null。 我还尝试了,但它也不工作。 有人能帮我吗?我将非常感激。
我尝试使用post方法生成表单,我想检查字段是否用isset()填充。但即使字段为空,isset也会返回true。 下面是一个简化的代码:(页面名称:test.php,post方法指向自身) 当您提交时,它总是响应“字段集”,即使您没有在“测试”输入中输入任何内容。 谢谢你的回答!