2016-11-01 5 views
1

ModelFormをDjangoアプリケーションのホームページに表示するテンプレートを追加しようとしています。私はhomeという名前のホームページのために私のプロジェクト内で独立したアプリケーションを作りました。スタティックではありませんが、私が使用しているテンプレートは今私のプロジェクトで使用されているメインのテンプレートディレクトリにあります。Django:TemplateDoesNotExist at/home/

私は自分のサーバーを実行し、/ホームに移動しようと、私は次のエラーを取得する:

TemplateDoesNotExist at /home/ 
{'form': <ActionCodeForm bound=False, valid=Unknown, fields=(action_code)>} 
Request Method: GET 
Request URL: http://127.0.0.1:8300/home/ 
Django Version: 1.9.7 
Exception Type: TemplateDoesNotExist 
Exception Value:  
{'form': <ActionCodeForm bound=False, valid=Unknown, fields=(action_code)>} 

は、どのように私はこのエラーを修正しますか?私はTemplateDoesNotExistエラーのために他のSOの答えを見てみましたが、それは'DIRS'の設定と関係がありますが、私の設定は正しく設定されているようですので、何が原因でエラーになるのか分かりません。ここで

は私settings.pyのテンプレートセクションで:

TEMPLATES = [ 
    { 
     'BACKEND': 'django.template.backends.django.DjangoTemplates', 
     'DIRS': [os.path.join(BASE_DIR, 'templates')] 
     , 
     'APP_DIRS': True, 
     'OPTIONS': { 
      'context_processors': [ 
       'django.template.context_processors.debug', 
       'django.template.context_processors.request', 
       'django.contrib.auth.context_processors.auth', 
       'django.contrib.messages.context_processors.messages', 
      ], 
     }, 
    }, 
] 

はここでテンプレート(action_code_form.html)です:

from home.forms import ActionCodeForm 

def action_code_form(request): 
    form = ActionCodeForm() 
    if request.method == 'POST': 
     form = ActionCodeForm(request.POST) 
     if form.is_valid(): 
      action_code = form.cleaned_data['action_code'] 
      form.save() 
    return render('action_code_form.html', {'form': form}) 

家:ここ

<form method="post" action=""> 
{% csrf_token %} 
<table> 
{{ form }} 
</table> 
<input type="submit" value="Submit"/> 
</form> 

はホーム/ views.pyです/models.py:

class ActionCode(models.Model): 
    action_code = models.CharField(blank=False, max_length=10, 
            verbose_name="Action Code") 

ホーム/ forms.py:

from home.models import ActionCode 

class ActionCodeForm(ModelForm): 
    class Meta: 
     model = ActionCode 
     fields = ('action_code',) 

答えて

3

あなたは間違ってrenderショートカットを使用しています。最初の引数はrequestである必要があります。

return render(request, 'action_code_form.html', {'form': form})