Python 如何使用Crispy表单用会话变量填充输入文本?

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

如果存在,我需要使用会话变量自动完成字段,如果不存在,则将其保留为空

但我不知道如何在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_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)

阅读更多关于它的文章