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

2024-04-23 14:47:59 发布

您现在位置:Python中文网/ 问答频道 /正文

如果存在会话变量,我需要自动完成一个字段,如果不存在,则将其留空。在

但我不知道如何用脆的形式在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)

表格如下:

^{pr2}$

有人能告诉我如何为dni_cuit输入存储在dni_cuit上的值吗?在


Tags: djangoinstanceform视图iftitlerequestsession
1条回答
网友
1楼 · 发布于 2024-04-23 14:47:59

您可以使用表单初始值

Use initial to declare the initial value of form fields at runtime. For example, you might want to fill in a username field with the username of the current session.

To accomplish this, use the initial argument to a Form. This argument, if given, should be a dictionary mapping field names to initial values. Only include the fields for which you’re specifying an initial value; it’s not necessary to include every field in your form.

所以在你的例子中,你要检查会话并决定是否需要它。在

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)

Django docs中阅读更多信息

相关问题 更多 >