如何从 Django 中的 views.py 中的类调用“模态”?

玛丽安娜·戈麦斯-库斯涅科夫

我有一个带有用于跟踪进入/离开时间的表单的页面。目前,有错误的条目(缺少输入或退出)会从 views.py 中标记出来。我根据给定的一些模板创建了一个模态,但我不知道如何从 views.py 调用它。

基本上,在提交被标记为“N”后,需要出现模式,要求用户提供一个值。现在模态只是说“嗨”,因为我试图让它首先出现,然后再深入研究它的功能。

下面是我的 views.py,并附有对需要发生模态调用的位置的评论。我不确定如何在这部分的逻辑中呈现它。

视图.py

class EnterExitArea(CreateView):
    model = EmployeeWorkAreaLog
    template_name = "operations/enter_exit_area.html"
    form_class = WarehouseForm

    def form_valid(self, form):
        emp_num = form.cleaned_data['employee_number']
        area = form.cleaned_data['work_area']
        station = form.cleaned_data['station_number']

        if 'enter_area' in self.request.POST:
            form.save()
            EmployeeWorkAreaLog.objects.filter((Q(employee_number=emp_num) & Q(work_area=area) & Q(time_out__isnull=True) & Q(time_in__isnull=True)) & (Q(station_number=station) | Q(station_number__isnull=True))).update(time_in=datetime.now())

            # If employee has an entry without an exit and attempts to enter a new area, mark as an exception 'N'
            if EmployeeWorkAreaLog.objects.filter(Q(employee_number=emp_num) & Q(time_out__isnull=True) & Q(time_exceptions="")).count() > 1:
                first = EmployeeWorkAreaLog.objects.filter(employee_number=emp_num, time_out__isnull=True).order_by('-time_in').first()
                EmployeeWorkAreaLog.objects.filter((Q(employee_number=emp_num) & Q(time_out__isnull=True))).exclude(pk=first.pk).update(time_exceptions='N')

                # Here's where the modal would need to be called because the record was flagged

            return HttpResponseRedirect(self.request.path_info)


class UpdateTimestampModal(CreateUpdateModalView):
    """
    Modal to request estimated entry/exit time for manager approval
    """
    main_model = EmployeeWorkAreaLog
    model_name = "EmployeeWorkAreaLog"
    form_class = WarehouseForm
    template = 'operations/modals/update_timestamp_modal.html'
    modal_title = 'Update Timestamp'

网址.py

urlpatterns = [
    url(r'enter-exit-area/$', EnterExitArea.as_view(), name='enter_exit_area'),
    url(r'update-timestamp-modal/(?P<main_pk>\d+)/$', UpdateTimestampModal.as_view(), name='update_timestamp_modal'),
]

enter_exit_area.html

{% extends "base.html" %}

{% load core_tags %}

{% block main %}
    <form id="warehouseForm" action="" method="POST" novalidate >
        {% csrf_token %}

        <div>
            <div>
                {{ form.employee_number }}
            </div>

            <div>
                {{ form.work_area }}
            </div>
            <div>
                {{ form.station_number }}
            </div>
        </div>

        <div>
            <div>
                <button type="submit" name="enter_area" value="Enter">Enter Area</button>
                <button type="submit" name="leave_area" value="Leave">Leave Area</button>
            </div>
        </div>
    </form>

    {% modal id="create-update-modal" title="Update Timestamp" primary_btn="Submit" default_submit=True %}


{% endblock main %}

update_timestamp_modal.html

{% load core_tags %}

<form id="create-update-form" method="post" action="{% url "operations:update_timestamp_modal" main_object.id %}">
    {% csrf_token %}
    <label>UPDATE TIMESTAMP</label>
    <div class="row">
        <div class="form-group col-xs-6">
            <h1>Hi!!</h1>
        </div>
    </div>
</form>

我在一些关于模态的文档中发现了这一点,这些文档似乎与调用它打开相关,以防万一:

所以模态模板标签基本上会呈现一个空模态,然后当你调用 ajaxOpen 时,你可以指定一个 URL,它将呈现将进入空模态的动态 HTML。因此,在这种情况下,您可能希望在通话中使用以下内容:

modals.ajaxOpen($('#create-update-modal'), undefined, $('#some-hidden-div').data('url'), function() {alert("it worked yay");});

假设您将 url 放在 html 中某个隐藏的 div 中,因为您不想只是在 JS 中对其进行硬编码,但是该 url 也可以从其他 ajax 调用或其他任何地方返回

玛丽安娜·戈麦斯-库斯涅科夫

不得不切换到基于函数的视图。为了呈现模态,在 views.py 中创建了一个呈现的变量,如果它退出,那么它会从主 html 调用模态。

return render(request, "operations/enter_exit_area.html", {
        'form': form,
        'enter_without_exit': enter_without_exit,
        'exit_without_enter': exit_without_enter,
    })

如果 enter_without_exit 和 exit_without_enter 从 views.py 逻辑返回 None 以外的任何内容,则它们呈现两种类型的模态

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在views.py django中设置默认图像

如何在 views.py 中创建 Django 模型?

如何在views.py [Django]中传递可选参数

如何在views.py中调用django的自定义书面AuthenticationBackend的authenticate()方法?

在Django views.py中引用文件

如何从 django 表单中获取日期值并将其存储在 views.py 中的变量中

如何在django views.py中的函数中设置许多mysql选择查询

如何在views.py索引函数中的django中添加我自己的python代码

如何在 Django views.py 中而不是在模板中打印数据?

如何在 django views.py 中的单个变量或列表中存储多个值?

Django:如何根据我在views.py中的功能显示不同的图像

Python Django如何在views.py中获取登录用户的价值?

如何在Django中创建views.py的excel下载选项

如何从Django管理员在views.py中编辑字典

如何将javascript变量值传递给Django中的views.py函数?

如何在views.py django中获取文本框值

如何在 Django 的模板中使用 views.py 中的变量?

django如何在views.py文件中自动执行功能

如何在django views.py中获取选定选项的文本值

如何在Views.py中运行函数并打印结果?-Django

如何在views.py Django中返回ajax響應以及重定向

如何在views.py中动态选择Django模型字段

如何从views.py或其他模板中显示django-simple-history?

如何从 Django 中的 views.py 获取变量并将其显示在我的 HTML 页面上

在Django模板中显示views.py中的url变量

在Django的views.py中创建外键时出错

使用 Django 从 views.py 更新表中的记录

Django的Views.py中Select Option的值

views.py 中的 Django 数学过滤器