【问题标题】:Django: TemplateDoesNotExist at /home/Django: TemplateDoesNotExist 在 /home/
【发布时间】:2017-03-14 19:11:16
【问题描述】:

我正在尝试添加一个模板,该模板在我的 Django 应用主页上显示 ModelForm。我在我的项目中为名为@9​​87654322@ 的主页创建了一个单独的应用程序,因为它不是静态的,但我正在使用的模板现在位于我的项目使用的主模板目录中。

当我运行我的服务器并尝试导航到 /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):

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

这里是 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})

主页/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',)

【问题讨论】:

    标签: django django-forms django-templates


    【解决方案1】:

    您错误地使用了render 快捷方式。第一个参数应该是request

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

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 2011-06-13
      • 2014-10-17
      • 1970-01-01
      • 1970-01-01
      • 2018-09-29
      相关资源
      最近更新 更多