2016-11-01 4 views
1

Ich versuche, eine Vorlage, die eine ModelForm auf der Startseite meiner Django-App zeigt. Ich habe eine eigene App in meinem Projekt für die Homepage home erstellt, da es nicht statisch ist, aber die Vorlage, die ich verwende, lebt im Hauptvorlagen-Verzeichnis, das gerade von meinem Projekt verwendet wird.Django: TemplateDoesNotExist at/home/

Wenn ich meinen Server laufen und versuchen, zu/home zu navigieren, ich folgende Fehlermeldung erhalten:

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

Wie behebe ich diesen Fehler? Ich habe versucht, andere SO Antworten für TemplateDoesNotExist Fehler zu suchen und sah, dass es mit der 'DIRS' Einstellung zu tun hat, aber meins scheint korrekt eingerichtet zu sein, so dass ich nicht weiß, was den Fehler verursachen würde.

ist die Vorlagen Abschnitt meines 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', 
      ], 
     }, 
    }, 
] 

Hier ist die Vorlage (action_code_form.html):

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

ist hier home/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}) 

Hause /models.py:

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

home/forms.py:

from home.models import ActionCode 

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

Antwort

3

Sie verwenden die render Verknüpfung falsch. Das erste Argument sollte die request sein.

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