嗨,我是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。非常感谢任何帮助。