Django 'str' 对象没有属性 'field' 上下文
Django 'str' object has no attribute 'field' context
我有一个问题,我收到了这个错误:
'str' 对象没有属性 'field'
这是我的看法:
from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponse
from .models import Company
from .forms import NewCompanyForm
# Sociétés
def companies_index(request):
companies_list = Company.objects.order_by('-id')
context = {
"companies_index": "active",
'companies_list': companies_list,
}
return render(request, 'companies/index.html', context)
def companies_create(request):
context = {
"companies_create": "active",
}
if request.method == 'POST':
form = NewCompanyForm(request.POST)
if form.is_valid():
form.save()
return redirect('companies_index')
form = NewCompanyForm()
return render(request,'companies/create.html',context,{'form': form})
def companies_delete(request, pk):
company = get_object_or_404(Company, pk=pk)
company.delete()
return redirect('companies_index')
问题出在 "create" 操作上,我想知道如何将上下文变量和表单变量传递到我的模板。
此致。
谢谢。
尝试以下方法
return render(request,'companies/create.html',{'context':context, 'form': form})
render 的第三个参数是一个字典,所以你想发送给模板的任何东西都应该打包在字典中。这将解决您的问题。
关于渲染方法
渲染(请求,template_name,上下文=None)
context
A dictionary of values to add to the template context. By
default, this is an empty dictionary. If a value in the dictionary is
callable, the view will call it just before rendering the template.
参考:https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/#render
一个解决方案可能是:
def companies_create(request):
payload = dict()
payload['context'] = {
"companies_create": "active",
}
if request.method == 'POST':
payload['form'] = NewCompanyForm(request.POST)
if form.is_valid():
form.save()
return redirect('companies_index')
form = NewCompanyForm()
return render(request,'companies/create.html', payload)
请注意,payload 是您为位置参数 context.
提供的字典
现在您可以毫无困难地将任意数量的上下文变量传递给模板。
我有一个问题,我收到了这个错误: 'str' 对象没有属性 'field'
这是我的看法:
from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponse
from .models import Company
from .forms import NewCompanyForm
# Sociétés
def companies_index(request):
companies_list = Company.objects.order_by('-id')
context = {
"companies_index": "active",
'companies_list': companies_list,
}
return render(request, 'companies/index.html', context)
def companies_create(request):
context = {
"companies_create": "active",
}
if request.method == 'POST':
form = NewCompanyForm(request.POST)
if form.is_valid():
form.save()
return redirect('companies_index')
form = NewCompanyForm()
return render(request,'companies/create.html',context,{'form': form})
def companies_delete(request, pk):
company = get_object_or_404(Company, pk=pk)
company.delete()
return redirect('companies_index')
问题出在 "create" 操作上,我想知道如何将上下文变量和表单变量传递到我的模板。
此致。
谢谢。
尝试以下方法
return render(request,'companies/create.html',{'context':context, 'form': form})
render 的第三个参数是一个字典,所以你想发送给模板的任何东西都应该打包在字典中。这将解决您的问题。
关于渲染方法
渲染(请求,template_name,上下文=None)
context
A dictionary of values to add to the template context. By default, this is an empty dictionary. If a value in the dictionary is callable, the view will call it just before rendering the template.
参考:https://docs.djangoproject.com/en/3.0/topics/http/shortcuts/#render
一个解决方案可能是:
def companies_create(request):
payload = dict()
payload['context'] = {
"companies_create": "active",
}
if request.method == 'POST':
payload['form'] = NewCompanyForm(request.POST)
if form.is_valid():
form.save()
return redirect('companies_index')
form = NewCompanyForm()
return render(request,'companies/create.html', payload)
请注意,payload 是您为位置参数 context.
提供的字典现在您可以毫无困难地将任意数量的上下文变量传递给模板。