2016-11-01 2 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)>} 

Как исправить эту ошибку? Я попытался посмотреть другие ответы SO для ошибок TemplateDoesNotExist и увидел, что это связано с настройкой '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):

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

Вот дом/views.py:

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}) 

дома /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}) 
Смежные вопросы