[英]Django 'str' object has no attribute 'field' context
我有一個問題,我收到了這個錯誤:'str' object has no attribute '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')
問題在於“創建”操作,我想知道如何將上下文變量和表單變量傳遞給我的模板。
此致。
謝謝。
嘗試以下
return render(request,'companies/create.html',{'context':context, 'form': form})
render 的第三個參數是一個字典,所以你想發送到模板的任何東西都應該打包在字典中。 這將解決您的問題。
渲染(請求,模板名稱,上下文=無)
語境
要添加到模板上下文的值字典。 默認情況下,這是一個空字典。 如果字典中的值是可調用的,視圖將在渲染模板之前調用它。
參考: 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)
請注意,有效負載是您為位置參數context提供的字典。
現在您可以毫無問題地將任意數量的上下文變量傳遞給模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.