2014-05-15 110 views
0

我有這行代碼在models.pyValueError異常在/資料/ Django的:沒有返回HttpResponse對象

@login_required 
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)) 
      args['form'] = form 
      return render(request, 'profile.tml', args) 

和forms.py

from django import forms 
from models import UserProfile 


class UserProfileForm(forms.ModelForm): 
    class Meta: 
     model = UserProfile 
     fields = ('address', 'contactnos') 

在我的loggedIn html的

{% extends 'base.html' %} 

{% block content %} 
<h2> Hi {{ full_name }} you are logged in!</h2> 
<p>click <a href="/accounts/logout/">here</a> to logout. </p> 

<p>Click <a href="/profile/">here</a> to edit your profile info </p> 

{% endblock %} 

的錯誤是說:

ValueError at/profile/ 視圖userprofile.views.user_profile未返回HttpResponse對象。

回答

0

您尚未對GET情況進行說明;當不通過POST訪問視圖時會發生什麼?你什麼都沒有返回,所以你得到這個錯誤。

返回http.HttpResponserequest.method != 'POST'

也許你的意思是取消縮進下半部else聲明。

您尚未對GET情況進行處理;當不通過POST訪問視圖時會發生什麼?你什麼都沒有返回,所以你得到這個錯誤。

返回http.HttpResponserequest.method != 'POST'

也許你的意思是取消縮進下半部else聲明。

@login_required 
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)) 
     args['form'] = form 
     return render(request, 'profile.tml', args) 
+0

配置文件頁面顯示'request.method!='POST'是什麼時候使用..但它不會保存一個值,並再次發生相同的錯誤。 –

+0

Sachi當前的代碼不會顯示該行爲。請嘗試再次發佈您的代碼。你的'user_profile'視圖當前在'GET'上返回'None',並且總是在'POST'上返回一個響應。 –

+0

它應該使用'POST'方法保存值,如果表單有效並重定向到'loggedin.html'。當用戶再次編輯配置文件時,舊值應填充表單。對不起,我剛剛在一週前學習了Django。 –

相關問題