编辑:我已经确定原因是rhel7提供的python包。解决方案是安装一个备用版本。在我的例子中,我刚刚将服务器移动到centOS,在那里提供的python与django一起工作。你知道吗
我有一个窗体可以对我的主视图进行操作,它包含两个按钮,保存和取消。在本地dev服务器上运行时(管理.py(runserver)这工作正常。当我把它推到生产环境中时,cancel按钮返回表单验证错误,尽管没有调用is\u valid方法。你知道吗
以下是视图:
def home(request):
#uses home.html
if request.method == 'POST':
#Figure out which button was pressed
#Cancel Button - Back to home
if request.POST.get("cancel"):
#return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
footer = request
lineitems = Budget.build(request.user)
c = {'lineitems': lineitems,
'footer':footer,}
return render(request, 'home.html', c)
#Save button on config.html IncomeForm/Expenses Form
if request.POST.get("config_save"):
#ExpensesForm submitted
if 'expenseName' in request.POST:
form = ExpensesForm(request.POST)
if form.is_valid():
form.save()
else:
temp = 'config.html'
footer = 'Expense Form Invalid'
c = {'form':form,
'footer':footer,}
return render(request, temp, c)
#IncomeForm submitted
else:
form = IncomeForm(request.POST)
if form.is_valid():
form.save()
else:
form = IncomeForm(request.POST)
temp = 'config.html'
footer = 'Form Invalid'
c = {'form':form,
'footer':footer,}
return render(request, temp, c)
#Use Budget Class to populate a table in template
Budget.update_data({'months':12,
'user':request.user})
temp = 'home.html'
footer = '* Line Modified'
lineitems = Budget.build(request.user)
c = {'lineitems': lineitems,
'footer':footer,}
return render(request, temp, c)
# if a GET (or any other method) we'll load the budget
else:
footer = '* Line item modified'
footer = request
Budget.update_data({'user': request.user,
'months':12})
lineitems = Budget.build(request.user)
c = {'lineitems': lineitems,
'footer':footer,}
return render(request, 'home.html', c)
模板如下:
{% extends "base.html" %}
{% load bootstrap3 %}
{% block title %}
<h1>Add {{ itemtype }}</h1>
{% endblock %}
{% block content %}
<form action="{% url 'home' %}" method="post">
{% csrf_token %}
{{ form.as_p }}
<div class="btn-group">
<input type="submit" name="config_save" value="Save" class="btn btn-primary"/>
<input type="submit" name="cancel" value="Cancel" class="btn btn-default"/>
</div>
</form>
{% endblock %}
{% block footer %}
{{ footer }}
{% endblock %}
编辑*
当我替换
{{ form.as_p }}
与
{% bootstrap_form form layout='vertical' %}
但不幸的是,在apache/wsgi服务器上运行时,这两种方法都不起作用。你知道吗
这是我的表格。注意,我还尝试删除类别:窗体控件和没什么区别。我还有另一个表单和视图,它的行为与此几乎相同(cancel是用else处理的,表单是modelform),唯一的区别是没有日期字段。为了排除这个问题,我排除了日期字段,但仍然有相同的问题。你知道吗
#Edit form to add/edit Expenses and Bills
class ExpensesForm(forms.ModelForm):
class Meta:
model = Items
exclude = ('skiplst',)
widgets = {'user': forms.HiddenInput(),
'itemType': forms.HiddenInput(),
'itemName': forms.TextInput(attrs={'class':'form-control',}),
'category': forms.Select(attrs={'class':'form-control',}),
'itemAmount': forms.NumberInput(attrs={'class':'form-control',}),
'payCycle': forms.Select(attrs={'class':'form-control',}),
'itemNote': forms.TextInput(attrs={'class':'form-control',}),
'nextDueDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'}),
'endDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'})}
#Edit form to add/edit Income Sources
class IncomeForm(forms.ModelForm):
class Meta:
model = Items
exclude = ('category','skiplst')
widgets = {'user': forms.HiddenInput(),
'itemType': forms.HiddenInput(),
'itemName': forms.TextInput(attrs={'class':'form-control',}),
'itemAmount': forms.NumberInput(attrs={'class':'form-control',}),
'payCycle': forms.Select(attrs={'class':'form-control',}),
'itemNote': forms.TextInput(attrs={'class':'form-control',}),
'nextDueDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'}),
'endDate': forms.DateInput(attrs={'name': 'date',
'class':'form-control'})}
当表单提交cancel值时,它会提交
Cancel
,而您正在检查cancel
,这样就永远不会执行逻辑。你知道吗相关问题 更多 >
编程相关推荐