Python 如何使用Crispy表单用会话变量填充输入文本?
如果存在,我需要使用会话变量自动完成字段,如果不存在,则将其保留为空 但我不知道如何在Django用脆的形式制作 这是一种观点:Python 如何使用Crispy表单用会话变量填充输入文本?,python,django,forms,django-crispy-forms,Python,Django,Forms,Django Crispy Forms,如果存在,我需要使用会话变量自动完成字段,如果不存在,则将其保留为空 但我不知道如何在Django用脆的形式制作 这是一种观点: def addclient(request): title = "Zona Clientes" form = NewClientForm(request.POST or None) if 'dni_cuit' in request.session: dni_cuit = request.session.get('dni_cui
def addclient(request):
title = "Zona Clientes"
form = NewClientForm(request.POST or None)
if 'dni_cuit' in request.session:
dni_cuit = request.session.get('dni_cuit')
print("ESTÁ REGISTRADA LA SESSION DNI_CUIT"+dni_cuit)
context = {
"title": title,
"form": form,
"dni_cuit": dni_cuit
}
else:
context = {
"title": title,
"form": form,
}
if form.is_valid():
instance = form.save(commit=False)
instance.save()
del request.session['dni_cuit']
# Las 2 lineas anteriores pueden obviarse si solo queremos guardar
# los datos sin hacer nada con ellos con la siguiente linea
# form.save()
context = {
"title": "Cliente Añadido - Gracias",
}
return render(request, "clients/addclient.html", context)
表格如下:
# Formulario crear cliente
class NewClientForm(forms.ModelForm):
class Meta:
model = Client
fields = ['dni_cuit',
'first_name',
'last_name',
'phone',
'email',
'address',
]
def clean_dni_cuit(self):
dni_cuit = self.cleaned_data.get('dni_cuit')
return dni_cuit
def clean_first_name(self):
first_name = self.cleaned_data.get('first_name')
return first_name
def clean_last_name(self):
last_name = self.cleaned_data.get('last_name')
return last_name
def clean_phone(self):
phone = self.cleaned_data.get('phone')
return phone
def clean_email(self):
email = self.cleaned_data.get('email')
return email
def clean_address(self):
address = self.cleaned_data.get('address')
return address
有人能告诉我,如果设置了
dni\u cuit
,如何输入存储在dni\u cuit
上的值吗?您可以使用表单初始值
使用initial在运行时声明表单字段的初始值。
例如,您可能希望在用户名字段中填入
当前会话的用户名
要完成此操作,请使用表单的初始参数。这个论点,,
如果给定,则应该是将字段名映射到首字母的字典
价值观仅包括要为其指定首字母的字段
价值没有必要在表单中包含每个字段
因此,在您的情况下,您检查会话并决定是否需要它
if 'dni_cuit' in request.session:
form = NewClientForm(request.POST or None, initial={'dni_cuit': request.session['dni_cuit']})
else:
form = NewClientForm(request.POST or None)
阅读更多关于它的文章