本文将带您了解关于视图acc_app.views.merchant_messages没有返回HttpResponse对象它返回None的新内容,另外,我们还将为您提供关于.netWebAPI2,ret
本文将带您了解关于视图acc_app.views.merchant_messages没有返回HttpResponse对象它返回None的新内容,另外,我们还将为您提供关于.net Web API 2,return HttpResponseMessage with ObjectContent、asp.net core WebApi 返回 HttpResponseMessage、asp.net – .NET Web API HttpResponseMessage模式?、asp.net – MVC 4 Web API Action返回:类型vs HttpResponseMessage的实用信息。
本文目录一览:- 视图acc_app.views.merchant_messages没有返回HttpResponse对象它返回None
- .net Web API 2,return HttpResponseMessage with ObjectContent
- asp.net core WebApi 返回 HttpResponseMessage
- asp.net – .NET Web API HttpResponseMessage模式?
- asp.net – MVC 4 Web API Action返回:类型vs HttpResponseMessage
视图acc_app.views.merchant_messages没有返回HttpResponse对象它返回None
您要发出POST请求以查看它根本无法处理POST请求。
@login_required(login_url='login-user')
def merchant_messages(request):
// missing here
// if request.method == "POST":
if request.method == "GET":
message_list(request,receiver=request.user)
admin = UserAccount.objects.get(is_superuser=True)
all_messages = {
'receiver': UserAccount.objects.get(email=admin),'messages': Message.objects.filter(sender=admin,receiver=request.user) |
Message.objects.filter(sender=request.user,receiver=admin)
}
return render(request,'dashboard/merchant/message-task.html',all_messages)
,
问题是您的HTML表单对链接到merchant_messages
视图而不是messages_list
视图的URL发出了发布请求。
您收到的错误表示未从merchant_messages
视图接收到HttpResponse,这是正确的,因为您仅在视图接收到GET请求时才返回正确的响应。
您应该更改HTML表单,以将帖子发布到绑定到messages_list
视图的url中(并可能更改视图的名称,因为它会创建一条消息,而不是列出它们。
提示:下次还发布您的urls.py,以便我们了解您如何将url链接到您的视图。
.net Web API 2,return HttpResponseMessage with ObjectContent
public async TaskHttpResponseMessage Register(AllenRegistration model) { 1. Will return 400 Error return Request.CreateResponse( HttpStatusCode.BadReques t); 2. Will return Json Type like {return1:A,returnBL:B} return new HttpResponseMessa
public async Task
{
1.
Will return 400 Error
return Request.CreateResponse(HttpStatusCode.BadRequest);
2.
Will return Json Type like {"return1":"A","returnB"L:"B"}
return new HttpResponseMessage(HttpStatusCode.OK)
{Content = new ObjectContent
asp.net core WebApi 返回 HttpResponseMessage
ASP.NET WebApi 2 中的示例代码:
[Route("values/{id}")]
public async Task<HttpResponseMessage> Get(string id) { var response = Request.CreateResponse(HttpStatusCode.OK); var accept = Request.Headers.Accept; var result = await _valuesService.Get(id); if (accept.Any(x => x.MediaType == "text/html")) { response.Content = new StringContent(result, Encoding.UTF8, "text/html"); } else { response.Content = new StringContent(result, Encoding.UTF8, "text/plain"); } return response; }
ASP.NET Core WebApi 中的示例代码:
[Route("values/{id}")]
public async Task Get(string id) { var accept = Request.GetTypedHeaders().Accept; var result = await _valuesService.Get(id); var data = Encoding.UTF8.GetBytes(result); if (accept.Any(x => x.MediaType == "text/html")) { Response.ContentType = "text/html"; } else { Response.ContentType = "text/plain"; } await Response.Body.WriteAsync(data, 0, data.Length); }
可以看到,改变还是很大的,主要是两方面:
没有了 Request.CreateResponse
,获取 Accept 需要通过 Request.GetTypedHeaders()
。
没有返回值,而是直接通过数据流的方式写入到 Response.Body
中。
asp.net – .NET Web API HttpResponseMessage模式?
public HttpResponseMessage Get(string id) { var app = apps.Single(c => c.Id == id); return new HttpResponseMessage(HttpStatusCode.OK) { Content = new ObjectContent<object>(app,Configuration.Formatters.JsonFormatter) }; }
要么
public Application Get(string id) { return apps.Single(c => c.Id == id); }
我的问题是“正确”的方式? #2要短得多但是#1更好或#2自动做#1#?
解决方法
两种情况下的响应都是相同的(HttpResponseMessage).
HttpResponseMessage允许您使用HTTP协议(例如,通过Headers属性)并统一您的返回类型.
返回CLR类型可以更具可读性,但是您可以放松使用不同状态代码返回不同类型的灵活性,除非您使用动态或对象来抵消返回特定类型的目的.
就个人而言,我更喜欢使用IHttpActionResult(在v2中添加)并在控制器操作上为预期的返回类型指定ResponseTypeAttribute以提高可读性.
[HttpGet] [ResponseType(typeof(Portfolio))] public IHttpActionResult GetPortfolio([FromUri] long id) { // get portfolio return Ok(portfolio); }
您可以使用默认的IHttpActionResult实现轻松地操作响应消息(以RESTful方式)(请参阅上面的OkResult).避免自己构造HttpResponseMessage也可以保持代码清洁. Here是关于IHttpActionResult的官方文章,here是关于HttpResponseMessage和IHttpActionResult的有趣的SO对话.
asp.net – MVC 4 Web API Action返回:类型vs HttpResponseMessage
public class MyController : ApiController { public IEnumerable<MyType> Get()...
VS
返回HttpResponseMessage:
public class MyController : ApiController { public HttpResponseMessage Get()...
??
MVC是否将类型转换成HttpResponseMessage内容对象?除了显式添加格式化程序之外,页面上的结果看起来是一样的.
与客户有什么区别?
解决方法
如果你返回CLR类型,它将被HttpResponseMessage包装.
唯一的区别是,如果你返回HttpResponseMessage,你有机会直接使用HTTP工作 – 所以你可以设置头文件,绕过MediaTypeFormatter等等.
这一切都是个人偏好和/或在您的行动中执行的活动的问题.
关于视图acc_app.views.merchant_messages没有返回HttpResponse对象它返回None的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.net Web API 2,return HttpResponseMessage with ObjectContent、asp.net core WebApi 返回 HttpResponseMessage、asp.net – .NET Web API HttpResponseMessage模式?、asp.net – MVC 4 Web API Action返回:类型vs HttpResponseMessage的相关信息,请在本站寻找。
本文标签: