在django viewflow

时间:2018-06-06 03:45:46

标签: python django django-viewflow viewflow

嗨,我是django viewflow的新手。该模板使用的是TemplateResponseMixin,我并不熟悉它。我希望我的表单能够呈现在我的页面中。我的问题是我将如何渲染我的表格。我已经在forms.py中创建了一个表单。代码

from django import forms
from viewflow.models import Task
from viewflow.models import ProcessData

class ProcessDataForm(forms.ModelForm):
    date = forms.CharField()
    requestDate = forms.CharField()
    requestDescription = forms.CharField()
    ncosRequester = forms.CharField()


    def __init__(self, *args, **kwargs):
        kwargs.setdefault('prefix', '_viewflow_activation')
        super(ActivationDataForm, self).__init__(*args, **kwargs)

    class Meta:
        model = ProcessData
        fields = ['date', 'requestDate', 'requestDescription', 'ncosRequester']

我还在models.py中添加了一个代码。代码

from __future__ import unicode_literals

from django.conf import settings
from django.db import models
from django.template import Template, Context
from django.utils.translation import ugettext_lazy as _
from django.utils.encoding import python_2_unicode_compatible, force_text

from .activation import STATUS, STATUS_CHOICES
from .exceptions import FlowRuntimeError
from .fields import FlowReferenceField, TaskReferenceField, TokenField
from .managers import ProcessQuerySet, TaskQuerySet, coerce_to_related_instance
from django.utils import timezone

class ProcessData(models.Model):
    date = models.CharField(max_length=200)
    requestDate = models.CharField(max_length=200)
    requestDescription = models.TextField()
    ncosRequester = models.CharField(max_length=200)
    created_date = models.DateTimeField(default=timezone.now)

    class Meta:
        abstract = True

这是我的views.py

# My code here
@method_decorator(login_required, name='dispatch')
class AllProcessDataListView(FlowListMixin, TemplateResponseMixin, DataTableMixin, generic.View):
    list_display = [
        'process_form'
    ]

    template_name = 'viewflow/site_processdata.html'

    def process_form(request, pk):
        if request.method == 'POST':
            form = ProcessDataForm(request.POST)
            if form.is_valid():
                post = form.save(commit=False)
                post.save()
                return (HttpResponseRedirect(instance.get_absolute_url()))
        else:
            form = ProcessDataForm()

            return render(request, 'viewflow/site_processdata.html', {'form':form})

    def get_queryset(self):
        """Filtered task list."""
        queryset = Task.objects.inbox(self.flows, self.request.user)

        return queryset
        #return render(TemplateResponseMixin, 'viewflow/site_processdata.html', {'form':form})

和我的viewflow / site_processdata.html文件

{% extends 'material/frontend/views/process_form.html' %}

{% load i18n viewflow viewflow_frontend material_form %}


{% block breadcrumbs_items %}
    <a class="active" href="{% url 'viewflow:index' %}">{% trans 'Process Data' %}</a>

{% endblock %}

{% load material_form %}

{% block action_btn %}

{% include 'viewflow/includes/flows_start_actions.html' %}

{% endblock %}

和我的process_form.html文件

{% extends current_module.base_template %}

{% load i18n material_form material_frontend %}

{% load material_form %}

{% block breadcrumbs_items %}
    <a href="{% url view.model|frontend_urlname:'list' %}">{{ view.model|verbose_name_plural|title }}</a>
{% endblock %}

{% block footer %}
<script type="text/javascript">
      config = {{ datatable_config|safe }};
      config['ajax']['data'] = function(data) {
        var keys = Object.keys(data);
        for(var i=0; i<=keys.length; i++) {
          var key = keys[i],
              value = data[key];
          delete data[key];
          data['datatable-' + key] = value;
        }
      };

      config['ajax']['beforeSend'] = function(request) {
        request.setRequestHeader("datatable", true);
      };

      $(document).one("turbolinks:load", function() {
        if ( ! $.fn.DataTable.isDataTable( '#table' ) ) {
          var datatable = $('#table').DataTable(config);
          new $.fn.dataTable.FixedHeader(datatable);

          $(document).one("turbolinks:before-cache", function() {
            datatable.destroy();
          });
        }
      });

</script>

{% endblock %}

{% block content %}
{% block left-panel %}
<div class="left-panel">
    <div class="card list-card">
        <div class="card-content">
          <div class="col-md-4" style="padding:20px;">
            <form method="POST">
                  {% csrf_token %}
                  {{  form.as_p }}
                  <button type="submit" name="_submit" class="btn">Submit</button>
            </form>
          </div>
        </div>
    </div>
</div>
{% endblock left-panel %}

{% endblock %}

如你所见。我的表单不会呈现在我的页面中。我缺少一些代码吗?有人可以帮助我解决这个问题吗? TIA。非常感谢任何帮助。

0 个答案:

没有答案