【问题标题】:Django The view didn't return an HttpResponse object. It returned None insteadDjango 视图没有返回 HttpResponse 对象。它返回 None 而不是
【发布时间】:2018-09-14 17:55:38
【问题描述】:

尝试检查变量 'avail.end_time:' 是否为空,如果是则重定向到 url。 但相反,我得到 “视图 mysite.views.enter_queue 没有返回 HttpResponse 对象。它返回了 None。”错误

Endtime 变量从我的可用性模型中被引用,其中 end_time = models.TimeField(null=False, blank=False)

我知道以前有人问过这个问题,但给出的解决方案都没有帮助解决这个问题。

@login_required
def enter_queue(request):
# get the user from the Django request & map to variable
django_user = request.user
  #link user_profile to django users profile model & get user's profile
user_profile = django_user.profile
#user_profile = Profile.objects.get(user=request.user)
  #Map user_availabilities variable to profile from Availability model
users_availabilities = Availability.objects.filter(profile=user_profile) 
#mapping user_avail to user profile

#creating an array to store all matching sessions
all_matching_sessions = []
  # avail is each Availability object
for avail in users_availabilities:

    if avail.end_time:
        return HttpResponseRedirect(render(request,'mysite/profile.html'))
    else:
        matching_sessions = Session.objects.filter(end_time__lte=avail.end_time)#looping through all the sessions end times that match to availability
#adding them to the array
        all_matching_sessions = all_matching_sessions + matching_sessions

#If no matching sessions are available
        if len(all_matching_sessions) == 0:
    #create a session
            player_session = Session(
                game = 'random_game',
                start_time = users_availabilities[0].start_time,
                end_time = users_availabilities[0].end_time,
            )
            player_session.save()
            return  render(request, 'mysite/profile.html')

        else:
            player_session = Session(
                session = all_matching_sessions[0],
                profile = user_profile
            )
            player_session.save()
            #return HttpResponse('Waiting in queue')
            return  render(request, 'mysite/profile.html')

Image of the error for reference

**错误*

ValueError at /account/enter_queue/

The view mysite.views.enter_queue didn't return an HttpResponse object. It 
returned None instead.

Request Method:     GET
Request URL:    http://127.0.0.1/account/enter_queue/
Django Version:     2.0.3
Exception Type:     ValueError
Exception Value:    

The view mysite.views.enter_queue didn't return an HttpResponse object. It 
returned None instead.

Exception Location:     /usr/local/lib/python3.6/site- 
packages/django/core/handlers/base.py in _get_response, line 139
Python Executable:  /usr/local/bin/python3.6
Python Version:     3.6.4
Python Path:    

['/home/mihir/meshwell/capstone-project/siteroot',
 '/usr/local/lib/python36.zip',
 '/usr/local/lib/python3.6',
 '/usr/local/lib/python3.6/lib-dynload',
 '/usr/local/lib/python3.6/site-packages',
 '/var/www/CapstoneProject/siteroot',
 '/var/www/CapstoneProject/siteroot/mysite']

Server time:    Thu, 5 Apr 2018 04:07:23 +0000
Traceback Switch to copy-and-paste view

/usr/local/lib/python3.6/site-packages/django/core/handlers/exception.py in 
inner

                response = get_response(request)

     ...
▶ Local vars
/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py in _get_response

                    "returned None instead." % (callback.__module__, view_name)

     ...
▶ Local vars 

【问题讨论】:

    标签: python django


    【解决方案1】:

    HttpResponseRedirect 应该采用 URL 而不是 HttpResponse 对象,您将使用 render() 返回该对象

    【讨论】:

    • 即返回 HttpResponseRedirect(reverse('account/profile/'))?
    • 不,reverse 采用 url 名称并将其转换为 url 路径。如果您知道您的 url 路径,则无需使用反向 - 只需执行 HttpResponseRedirect('/account/profile/'),也包括第一个 '/'
    • Url 被映射为 path('account/profile/', site_views.profile, name='profile') 但即使将其更改为返回 HttpResponseRedirect('account/profile/') ,也会出错不会消失
    • 您能否复制下面的堆栈跟踪以查看错误所在的位置?在您的图像中看不到它。
    • 啊,我想这是因为你的user_availabilities 是空的,所以它没有在列表中循环。而且由于它没有遍历列表,因此无法呈现任何响应。您应该在 for 循环之外提供后备响应。
    猜你喜欢
    • 2017-01-25
    • 1970-01-01
    • 2020-07-19
    • 2015-06-26
    • 1970-01-01
    • 2017-12-28
    • 1970-01-01
    相关资源
    最近更新 更多