ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-Django手动调试流程

2019-10-30 17:59:03  阅读:303  来源: 互联网

标签:django-views django-forms python django django-models


我正在开发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也绝对不错,我对此进行了测试,并且基本上是从我显示有效用户登录名的log​​inin.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,用户配置文件urls.py

(r'^accounts/', include ('userprofile.urls')),
...
url(r'^profile/$', 'userprofile.views.user_profile'),

解决方法:

如果这确实是您的视图代码,那是一个简单的缩进错误.它应该是:

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请求,或者因为表单中存在错误,并且您想要重新呈现上下文以显示这些错误并允许用户纠正他们.

标签:django-views,django-forms,python,django,django-models
来源: https://codeday.me/bug/20191030/1969517.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有