首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpResponse对象误差

HttpResponse对象误差
EN

Stack Overflow用户
提问于 2012-08-29 04:41:10
回答 2查看 827关注 0票数 0

我得到了的错误视图registration.views.login没有返回HttpResponse对象.

我正在制作一个登录应用程序,我希望当我点击登录按钮时,主页会显示给我。

当我按照给定的方式运行view.py时,我将得到页面未找到的错误

代码语言:javascript
复制
from django.template import  loader
from django.shortcuts import render
from registration.models import Registration
from django.http import HttpResponse
from django.template import RequestContext


def login(request):
    t = loader.get_template('registration/login.html')

    return render(request, 'registration/login.html')

urls.py文件如下所示:

代码语言:javascript
复制
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

    urlpatterns = patterns('',
        url(r'^polls/$', 'polls.views.index'),
        url(r'^polls/(?P<poll_id>\d+)/$', 'polls.views.detail'),
        url(r'^polls/(?P<poll_id>\d+)/results/$', 'polls.views.results'),
        url(r'^polls/(?P<poll_id>\d+)/vote/$', 'polls.views.vote'),
        url(r'^admin/', include(admin.site.urls)),
        url(r'^registration/$', 'registration.views.login'),

当我试图以以下方式运行view.py时:

代码语言:javascript
复制
from django.template import  loader
from django.shortcuts import render
from registration.models import Registration
from django.http import HttpResponse
from django.template import RequestContext

def login(request):
   t = loader.get_template('registration/login.html')
   if request.method == "POST":
    username = request.POST['user_name']
    password = request.POST['password']
    user = authenticate(username=username, password=password)
    if user is not None:
      if user.is_active:
        login(request, user)
        # success
        return render_to_response(request,'registration/login.html')

然后我得到了错误视图registration.views.login没有返回HttpResponse对象。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-29 05:11:27

您不需要在每个方法中加载模板;django将为您处理这个问题。Django要求从urls.py调用所有方法,返回一个HttpResponse对象。

您的方法有很多条件,无法到达返回语句。例如,如果用户没有活动怎么办?如果请求不是POST怎么办?

尝试此版本,如果任何条件失败,该版本将用户重定向回注册页面:

代码语言:javascript
复制
def login(request):
   # t = loader.get_template('registration/login.html') - not needed
   if request.method == "POST":
    username = request.POST.get('user_name')
    password = request.POST.get('password')
    user = authenticate(username=username, password=password)
    if user is not None:
      if user.is_active:
        login(request, user)
        # success
        return render(request,'registration/login.html')
      else:
        # user was not active
        return redirect('registration/')
    else:
        # not a valid user
        return redirect('registration/')
   else:
       # URL was accessed directly
       return redirect('registration/')
票数 2
EN

Stack Overflow用户

发布于 2012-08-29 04:52:15

样品量

view.py

代码语言:javascript
复制
def loginto(request):
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']
        user = authenticate(username=username, password=password)
        if user is not None:
        if user.is_active:
           login(request, user)
           return render_to_response('index1.html')
        else:
           return render_to_response('error1.html')
        else:
        return render_to_response('error2.html') 
    else:
        return render_to_response('error2.html')

url.py

代码语言:javascript
复制
url(r'^login', 'mytests.views.loginto', name='loginto'),

login.html

代码语言:javascript
复制
<form method="POST" action="{% url loginto %}">
  Username: <input type="text" name="username" size="15" /><br />
  Password: <input type="password" name="password" size="15" /><br />
  <div align="center">
    <p><input type="submit" value="Login" /></p>
  </div>
</form>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12171014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档