GVKun编程网logo

视图acc_app.views.merchant_messages没有返回HttpResponse对象它返回None

5

本文将带您了解关于视图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

视图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

.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 Register(AllenRegistration model)

{

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(new
                {
                    return1="A",

                    return2="B"
                }, Configuration.Formatters.JsonFormatter)
            };
        }


asp.net core WebApi 返回 HttpResponseMessage

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 Core, ASP.NET WebApi

 

 

asp.net – .NET Web API HttpResponseMessage模式?

asp.net – .NET Web API HttpResponseMessage模式?

所以我看到Web API 2控制器返回HttpResponse和实际对象.例:
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#?

解决方法

请参阅 this和 this SO问题.

两种情况下的响应都是相同的(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

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的相关信息,请在本站寻找。

本文标签: