Django 表单视图在[{';True';:True,';False';:False,';None';:None},{},{},catego';:<;catego:Salade>;]中查找键[Form]失败
我有一张关于帖子分类的表格。我想用户发布一些图片。当我尝试加载页面时,出现了一些错误。你知道吗 我从Django开始 我使用crispy表单,在我的模板中,我只是使用这个{%crispy表单%}加载标记Django 表单视图在[{';True';:True,';False';:False,';None';:None},{},{},catego';:<;catego:Salade>;]中查找键[Form]失败,django,Django,我有一张关于帖子分类的表格。我想用户发布一些图片。当我尝试加载页面时,出现了一些错误。你知道吗 我从Django开始 我使用crispy表单,在我的模板中,我只是使用这个{%crispy表单%}加载标记 class CreatePictureForm(forms.ModelForm): def __init__(self,*args,**kwargs): super(CreatePictureForm, self).__init__(*args,**kwargs)
class CreatePictureForm(forms.ModelForm):
def __init__(self,*args,**kwargs):
super(CreatePictureForm, self).__init__(*args,**kwargs)
self.helper = FormHelper()
self.helper.form_method="post"
self.helper.layout = Layout(
Field("image",css_class="form-control",style="margin-bottom:10px"),
Field("pictureoption",css_class="form-control",style="margin-bottom:10px"),
)
self.helper.add_input(Submit('submit','Upload a pic',css_class="single-input textinput textInput form-control"))
class Meta:
model = Picture
fields = [
'image',
'pictureoption',
]
以下是我的看法:
@login_required(login_url='/cooker/login')
def catego(request, slug):
catego = Catego.objects.get(slug=slug)
context = {
'catego': catego
}
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = CreatePictureForm(request.POST)
# check whether it's valid:
if form.is_valid():
form.instance.catego = self.object
form.instance.user = self.request.user
form.save()
return HttpResponseRedirect('/thanks/')
else:
form = CreatePictureForm()
return render(request, 'post_catego.html', context, {'form': form})
@property
def total_categories(self):
return self.categories.count()
这是我的追踪:
环境:
请求方法:获取
请求URL:
Django版本:3.0.8
Python版本:3.7.8
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'nutriscore',
'user',
'crispy_forms',
'help',
'message',
'geoip2',
'django_user_agents',
'supermarket',
'channel']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'user.middleware.ActiveUserMiddleware',
'django_user_agents.middleware.UserAgentMiddleware']
Template error:
In template /home/dulo0814/monProjetDjango/nutriscore/templates/base.html, error at line 24
Failed lookup for key [%s] in %r
14 : </title>
15 : <meta name="description" content="" />
16 : <meta name="viewport" content="width=device-width, initial-scale=1" />
17 :
18 : {# Global stylesheets #}
19 : {% load static %}
20 : <link rel="stylesheet" type="text/css" href="{% static 'nutriscore/monsite.css' %}">
21 : <!--<link rel="stylesheet" type="text/css" href="{% static 'nutriscore/style.scss' %}">-->
22 : <link rel="stylesheet" type="text/css" href="{% static 'nutriscore/bootstrap.min.css' %}">
23 : <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
24 : <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9I OYy5n3zV9zzTtmI3U ksdQRVvoxMfooAo" crossorigin="anonymous"></script>
25 : <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
26 : <!--<script src="{% static 'nutriscore/chart.js' %}"></script>-->
27 : {% block extra_css %}
28 :
29 : {% endblock %}
30 :
31 :
32 : </head>
33 :
34 : <body class="{% block body_class %}{% endblock %}" style="margin: 0px;">
Traceback (most recent call last):
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 828, in _resolve_lookup
current = current[bit]
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/context.py", line 83, in __getitem__
raise KeyError(key)
During handling of the above exception ('form'), another exception occurred:
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 834, in _resolve_lookup
if isinstance(current, BaseContext) and getattr(type(current), bit):
During handling of the above exception (type object 'RequestContext' has no attribute 'form'), another exception occurred:
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 842, in _resolve_lookup
current = current[int(bit)]
During handling of the above exception (invalid literal for int() with base 10: 'form'), another exception occurred:
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/home/dulo0814/monProjetDjango/nutriscore/views.py", line 66, in catego
return render(request, 'post_catego.html', context, {'form': form})
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/crispy_forms/templatetags/crispy_forms_tags.py", line 203, in render
c = self.get_render(context).flatten()
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/crispy_forms/templatetags/crispy_forms_tags.py", line 91, in get_render
actual_form = form.resolve(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 795, in resolve
value = self._resolve_lookup(context)
File "/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site-packages/django/template/base.py", line 849, in _resolve_lookup
(bit, current)) # missing attribute
Exception Type: VariableDoesNotExist at /dish/salade-cesar/
Exception Value: Failed lookup for key [form] in [{'True': True, 'False': False, 'None': None}, {}, {}, {'catego': <Catego: Salade césar>}]
已安装的应用程序:
['django.contrib.admin',
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“nutriscore”,
“用户”,
“脆皮形式”,
“救命”,
"讯息",,
"geoip2",,
“django_用户_代理”,
“超市”,
“频道”]
已安装的中间件:
['django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xFrameOptions中间件',
'user.middleware.ActiveUserMiddleware',
'django_user_agents.middleware.UserAgentMiddleware']
模板错误:
在template/home/dulo0814/monProjetDjango/nutriscore/templates/base.html中,第24行出现错误
在%r中查找密钥[%s]失败
14 :
15 :
16 :
17 :
18:{#全局样式表}
19:{%load static%}
20 :
21 :
22 :
23 :
24 :
25 :
26 :
27:{%block-extra_-css%}
28 :
29:{%endblock%}
30 :
31 :
32 :
33 :
34 :
回溯(最近一次呼叫最后一次):
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第828行,在“解析”查找中
电流=电流[位]
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/context.py”,第83行,在__
升起钥匙错误(钥匙)
在处理上述异常(“表单”)期间,发生了另一个异常:
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第834行,在“解析”查找中
如果isinstance(当前,BaseContext)和getattr(类型(当前),位):
在处理上述异常期间(类型对象“RequestContext”没有属性“form”),发生了另一个异常:
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第842行,在“解析”查找中
当前=当前[int(位)]
在处理上述异常期间(以10为基数的int()的文本无效:“form”),发生了另一个异常:
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/core/handlers/exception.py”,第34行,内部
响应=获取响应(请求)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/core/handlers/base.py”,第115行,在“获取”响应中
response=self.process\u异常\u由\u中间件(e,请求)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/core/handlers/base.py”,第113行,在“获取”响应中
响应=包装的回调(请求,*回调参数,**回调参数)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/contrib/auth/decorators.py”,第21行,在“包装”视图中
返回视图功能(请求,*args,**kwargs)
文件“/home/dulo0814/monProjetDjango/nutriscore/views.py”,第66行,在catego中
返回呈现(请求'post_catego.html',上下文,{'form':form})
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/shortcuts.py”,第19行,呈现
content=loader.render_to_string(模板名称、上下文、请求、using=using)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/loader.py”,第62行,呈现到字符串中
返回template.render(上下文、请求)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/backends/django.py”,第61行,呈现
返回self.template.render(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第171行,呈现
返回self.\u呈现(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第163行,在渲染中
返回self.nodelist.render(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第936行,呈现
位=节点。带注释的渲染(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第903行,带注释的渲染
返回self.render(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/loader_tags.py”,第150行,呈现
返回编译的\u父对象。\u呈现(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第163行,在渲染中
返回self.nodelist.render(上下文)
文件“/home/dulo0814/virtualenv/monProjetDjango/3.7/lib/python3.7/site packages/django/template/base.py”,第936行,呈现
位=n
@login_required(login_url='/cooker/login')
def catego(request, slug):
catego = Catego.objects.get(slug=slug)
context = {
'catego': catego
}
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = CreatePictureForm(request.POST)
# check whether it's valid:
if form.is_valid():
form.instance.catego = self.object
form.instance.user = self.request.user
form.save()
return HttpResponseRedirect('/thanks/')
else:
form = CreatePictureForm()
context['form'] = form # add `form` to the context
return render(request, 'post_catego.html', context)