首页 > 解决方案 > 如何使用模板处理器中的 django modelForm?

问题描述

我正在使用 django 模板处理器在所有模板中制作一个 django 模型表单,以便用户可以在所有页面中创建一个新对象。这是 templateprocessor.py 文件

from .forms import CreateForm



def injectCreateForm(request, *args, **kwargs):
    form = CreateForm()
    return {
        "form": form,
    }

我通过引导模式在 base.html 中使用了它。

<div class="modal fade" id="createForm" tabindex="-1">
<div class="modal-dialog">
    <div class="modal-content">
    <div class="modal-header">
        <h5 class="modal-title">Creating New Form</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
    <form method="POST">
      {% csrf_token %}
      <div class="modal-body">
              {{form.project_name|as_crispy_field}}
              {{form.project_type|as_crispy_field}}
              {{form.key|as_crispy_field}}
      </div>
      
      <div class="modal-footer">
          <button type="button" id="cancel" class="btn btn-secondary" >Cancel</button>
          <button type="submit" id="createBtn" class="btn btn-primary">Create</button>
      </div>
    </form>
    </div>
</div>

现在我的问题是如何使用我尝试过的这种表单使用 ajax,但是 ajax 请求的数据不是表单本身的数据。它的成功源于ajax。

def createAnotherProject(request):
    form = CreateForm(request.POST or None)
    if request.is_ajax():
        print("the request is ajax")
        if projectForm.is_valid():
            print("the request is ajax and the form is valid")
            data = {"projectKey": ""}
            return JsonResponse({"data": data})
    context = {"form": form}
    return render(request, "tracking/base.html", context)

问题是我的表单永远无效,因为视图完全忽略了它。非常感谢任何帮助。提前致谢....

标签: django-modelsdjango-viewsdjango-formsdjango-templates

解决方案


推荐阅读