2017-06-09 8 views
0

誰でも私がこれを理解する手助けはできますか?私は値を取得し続けています。私のビューはHttpResponseを返していないと言っています!何が原因でエラーが発生するのか分かりません。私は私のくぼみや私のすべてのURLをチェックしました。私は私のビューでURLを呼び出すためにリダイレクト(逆())関数を使用しています。ValueError/account/register/

ここにトレースバックです: 内部サーバーエラーが:/アカウント/登録/

Traceback (most recent call last): 
    File "/Library/Python/2.7/site-packages/django/core/handlers/exception.py", line 41, in inner 
    response = get_response(request) 
    File "/Library/Python/2.7/site-packages/django/core/handlers/base.py", line 198, in _get_response 
    "returned None instead." % (callback.__module__, view_name) 
ValueError: The view accounts.views.register didn't return an HttpResponse object. It returned None instead. 

ここでは

from django.shortcuts import render, redirect 
from django.urls import reverse 

from accounts.forms import (
    RegistrationForm, 
    EditProfileForm 
) 

from django.contrib.auth.models import User 
from django.contrib.auth.forms import UserChangeForm, PasswordChangeForm 
from django.contrib.auth import update_session_auth_hash 
from django.contrib.auth.decorators import login_required 


def register(request): 
    if request.method =='POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect(reverse('home:home')) 
     else: 
      form = RegistrationForm() 
      args = {'form': form} 
     return render(request, 'accounts/reg_form.html', args) 

def view_profile(request, pk=None): 
    if pk: 
     user = User.objects.get(pk=pk) 
    else: 
     user = request.user 
     args = {'user': user} 
    return render(request, 'accounts/profile.html', args) 

def edit_profile(request): 
    if request.method == 'POST': 
     form = EditProfileForm(request.POST, instance=request.user) 

     if form.is_valid(): 
      form.save() 
      return redirect(reverse('accounts:view_profile')) 
    else: 
     form = EditProfileForm(instance=request.user) 
     args = {'form': form} 
     return render(request, 'accounts/edit_profile.html', args) 

def change_password(request): 
    if request.method == 'POST': 
     form = PasswordChangeForm(data=request.POST, user=request.user) 

     if form.is_valid(): 
      form.save() 
      update_session_auth_hash(request, form.user) 
      return redirect(reverse('accounts:view_profile')) 
     else: 
      return redirect(reverse('accounts:change_password')) 
    else: 
     form = PasswordChangeForm(user=request.user) 

     args = {'form': form} 
     return render(request, 'accounts/change_password.html', args) 

とここに私のアカウント/ views.pyある私のアカウント/ urls.pyです。

from django.conf.urls import url 
from . import views 
from django.contrib.auth.views import (
    login, logout, password_reset, password_reset_done, password_reset_confirm, 
    password_reset_complete 
) 

urlpatterns = [ 
    url(r'^login/$', login, {'template_name': 'accounts/login.html'}, name='login'), 
    url(r'^logout/$', logout, {'template_name': 'accounts/logout.html'}, name='logout'), 
    url(r'^register/$', views.register, name='register'), 
    url(r'^profile/$', views.view_profile, name='view_profile'), 
    url(r'^profile/(?P<pk>\d+)/$', views.view_profile, name='view_profile_with_pk'), 
    url(r'^profile/edit/$', views.edit_profile, name='edit_profile'), 
    url(r'^change-password/$', views.change_password, name='change_password'), 

    url(r'^reset-password/$', password_reset, {'template_name': 'accounts/reset_password.html', 'post_reset_redirect': 'accounts:password_reset_done', 'email_template_name': 'accounts/reset_password_email.html'}, name='reset_password'), 

    url(r'^reset-password/done/$', password_reset_done, {'template_name': 'accounts/reset_password_done.html'}, name='password_reset_done'), 

    url(r'^reset-password/confirm/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$', password_reset_confirm, {'template_name': 'accounts/reset_password_confirm.html', 'post_reset_redirect': 'accounts:password_reset_complete'}, name='password_reset_confirm'), 

    url(r'^reset-password/complete/$', password_reset_complete,{'template_name': 'accounts/reset_password_complete.html'}, name='password_reset_complete') 

] 

答えて

0

def register(request): 
    if request.method =='POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect(reverse('home:home')) 
     else: 
      form = RegistrationForm() 
      args = {'form': form} 
     return render(request, 'accounts/reg_form.html', args) 

renderはif文の内部にあるので、メソッドがポストでない場合は、エラーメッセージが示唆するように関数は返されません。機能をレンダリング

+0

私は理解できません。私は別の場所にレンダリングする必要がありますか?私は何があってもエラーになります。 – mzayas

0

編集あなたの意見、

def register(request): 
    if request.method =='POST': 
     form = RegistrationForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect(reverse('home:home')) 
    else: 
     form = RegistrationForm() 
    args = {'form': form} 
    return render(request, 'accounts/reg_form.html', args) 

は、if文の外でなければなりません。また、argもif文の外側になければなりません。そのため、ValueErrorが発生します。