【发布时间】:2016-08-23 14:12:13
【问题描述】:
我在 django 项目中使用 jinja2 模板引擎。我对设置做了相应的更改:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.jinja2.Jinja2',
'DIRS': [os.path.join(PROJECT_DIR.child("templates"), ''),],
'OPTIONS': {
'environment': 'web_services.settings.jinja2.environment',
}
},
]
从这里加载环境:
from django.contrib.staticfiles.storage import staticfiles_storage
from django.core.urlresolvers import reverse
from jinja2 import Environment
def environment(**options):
env = Environment(**options)
env.globals.update({
'static': staticfiles_storage.url,
'url': reverse,
})
return env
我现在在模板中渲染 django 表单时遇到问题。我有以下登录表单:
class LoginForm(forms.Form):
email = forms.EmailField(
widget=forms.TextInput(
attrs={'class':'form-control', 'placeholder':'email',
'required':'True', 'max_length':'80'}
), label='Email address'
)
password = forms.CharField(
widget=forms.PasswordInput(
attrs={'class':'form-control', 'placeholder':'password',
'required':'True', 'max_length':'80', 'render_value':'False'}
), label="Password"
)
在模板中我像这样使用这个 django 表单
<form method="post" name="{{ url('auth:login') }}">
<div class="form-1-field">
{{ LoginForm.email }}
{{ LoginForm.password }}
</div>
</form>
在我渲染的模板中,我收到以下错误{{ no such element: django.forms.forms.DeclarativeFieldsMetaclass object['email'] }}
为什么会这样,我该如何解决这个问题?
编辑
把错误的观点。这是我无法使用的:
class IndexAccounts(View):
def get(self, request):
if request.user.is_authenticated():
return redirect(reverse('home:index'))
return render(request, 'login.jinja2', {'LoginForm': LoginForm})
【问题讨论】:
-
您能提供视图吗?还有你打电话给
environment()的地方? -
@vmonteco 提供了上面的视图。我是否需要明确调用
environment()?正如我从docs 了解到的那样,我只需要将参考放入TEMPLATES设置中的选项 -
我的错,看来你是对的。那你能提供一个完整的回溯吗?
-
@vmonteco 我认为没有追溯。它只是渲染这个
{{ no such element: django.forms.forms.DeclarativeFieldsMetaclass object['email'] }}并在页面上显示它?我的意思是没有像人们期望的那样标准的黄页追溯 -
你知道涉及到哪一行吗?真正的问题(我真的不知道),你确定你的
post()函数只处理 POST 请求吗?
标签: django django-templates jinja2