我从1.10迁移到1.11.15后立即开始收到此错误 .
这是视图代码:
def signin(request):
form = forms.LoginForm()
form_reset = forms.PasswordResetForm()
if request.method == "POST":
form = forms.LoginForm(request.POST)
if form.is_valid():
login(request, form.user)
messages.success(request, "You are now signed in")
return redirect(reverse('landscape'))
d = {
'form': form,
'form_reset': form_reset
}
return render(request, "signin.html", d)
“return”语句是异常跟踪中的语句 . 正如您所看到的,我将“dict”(不是Context)传递给渲染快捷方式功能 .
我通过整个堆栈跟踪,我可以看到字典确实被更改为django lib中的Context对象(/usr/local/lib/python2.7/dist-packages/django/template/backends/django.py ):
class Template(object):
def __init__(self, template, backend):
self.template = template
self.backend = backend
@property
def origin(self):
return self.template.origin
def render(self, context=None, request=None):
context = make_context(context, request, autoescape=self.backend.engine.autoescape)
try:
return self.template.render(context)
except TemplateDoesNotExist as exc:
reraise(exc, self.backend)
类型检查进一步向下发射 .
知道我的设置有什么问题吗?
requirements.txt是完整视图:
Django==1.11.15
http-parser==0.8.1
httpie==0.8.0
httplib2==0.8
dj-database-url==0.3.0
dj-static==0.0.6
gunicorn==19.1.1
psycopg2==2.7.5
static==0.4
wsgiref==0.1.2
websocket-client==0.32.0
Pillow==2.8.1
django-storages==1.5.2
boto==2.38.0
twitter==1.17.1
rollbar==0.13.11
django-cors-headers==1.1.0
django-annoying==0.10.3
django-letsencrypt==2.0.0
django-compressor==2.1.1
braintree==3.38.0
validate-email==1.3
pydns==2.3.6
asgi-redis==1.4.3
asgiref==1.1.2
channels==1.1.8
django-redis-cache==1.7.1
whitenoise==3.3.1
daphne==1.4.2
django-js-reverse==0.8.1
crypto==1.4.1
cryptography==1.8.1
pycrypto==2.6.1
1 回答
通过追溯经过大量挖掘 . 我意识到跟踪是通过两次提到的库代码运行的 . (一旦将dict更改为Context,并在上下文已经是Context的情况下打破第二次运行)
我的模板包含:
从bootstrap表单包 . 删除该行修复了该问题 .
我将假设包已过期并重写代码 .