我正在开发Django应用程序。我花了大约40-50个小时研究Django,我正在努力制作应用程序!
但是,我开始遇到“更严重”的错误,正如有些人可能会称之为错误,因为我无法从我的堆栈跟踪中找出真正的问题。
基本上,我点击了我页面上的链接,弹出此错误:
请求方法:GET
请求网址:/ accounts / profile /
Django版本:1.5.1
异常类型:ValueError
例外价值:
*视图userprofile.views.user_profile未返回HttpResponse对象。*
这让我相信错误发生在我的视图文件中,除了我正在遵循行的教程行,我被引导相信错误可能在于如何使用forms.py来创建HttpResponse对象
简而言之,就是,
form = UserProfileForm(request.POST, instance=request.user.profile)
...
args = {}
args.update(csrf(request)) // security token
args['form'] = form
return render_to_response('profile.html', args)
profile.html也绝对没问题,我测试过,我基本上是在一个我显示有效用户登录信息的loggedin.html页面中调用它。
非常感谢你的帮助,我通常不会问问题,但是我一直坚持这个问题5-6个小时。尽量不要嘲笑我不理解这个简单但隐藏起初的错误:)
另外,如果你能说明你是如何解决这个错误的话,我更愿意在回答中,特别是说明我的想法是什么以及根本误解在哪里。
在你的回答中,只引用了文档的特定实例,因为我已经进行了大量的搜索,但也许它并没有缩小到我的问题:D
再次感谢,
詹姆斯
评论一:教程
Here is the tutorial我指的是。我正在坚持识别错误,因为我有所有的代码,一切正常,直到我尝试点击超链接。我没有经验 错误来自哪里。
第二条评论:相关代码
USERPROFILE / views.py
def user_profile(request):
if request.method=='POST':
form = UserProfileForm(request.POST, instance=request.user.profile)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/loggedin')
else:
user = request.user
profile = user.profile
form = UserProfileForm(instance=profile)
args = {}
args.update(csrf(request)) // security token
args['form'] = form
return render_to_response('profile.html', args)
myapp urls.py,userprofile urls.py
(r'^accounts/', include ('userprofile.urls')),
...
url(r'^profile/$', 'userprofile.views.user_profile'),
答案 0 :(得分:4)
如果这确实是您的视图代码,那么这是一个简单的缩进错误。它应该是:
def user_profile(request):
if request.method=='POST':
form = UserProfileForm(request.POST, instance=request.user.profile)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/loggedin')
else:
user = request.user
profile = user.profile
form = UserProfileForm(instance=profile)
args = {}
args.update(csrf(request)) // security token
args['form'] = form
return render_to_response('profile.html', args)
当request.METHOD为GET
时,在初始化if上没有else
子句,因此视图函数结束而不返回任何内容。相反,您希望创建表单,将其添加到上下文并呈现它 - 要么是因为它是GET
请求,要么是因为表单中存在错误,并且您想要重新呈现上下文以显示这些错误,允许用户更正它们。