ここで何が起こっているのかわかりません: Django Docs の ContactForm の例に従って、非常に単純な Django フォームを実装していると思いました (ただし、forms.py には別の例を使用しました)。ただし、何らかの理由で、ページが読み込まれるとテンプレートを取得しますが、フォームが表示されません。すべての HTML はテンプレートどおりにありますが、Django のもの (theTest
追加したフォームと変数) はレンダリングされません。
どこかに特定できない合併症があることを半分望んでいますが、n00bエラーを発生させてしまったのではないかと心配しています......
誰かが私を助けることができれば、本当に感謝しています!
私のコード:
フォーム.py:
class ContactSupportForm(forms.Form):
fields = ('theSubject', 'theMessage')
widgets = {
'theMessage': forms.Textarea(attrs={'cols': 55, 'rows': 12}),
}
error_css_class = 'error'
required_css_class = 'required'
ビュー.py:
from forms import ContactSupportForm
@login_required
def postSupportMessage(theRequest):
"""The new view to which the support form is submitted"""
isLoggedIn = linfiniti.isUserLoggedIn(theRequest)
if isLoggedIn == True:
myRequestingUser = theRequest.user
myRequestingUserEmail = myRequestingUser.email
else:
return HttpResponseForbidden()
if theRequest.POST:
theForm = ContactSupportForm(theRequest.POST)
if theForm.is_valid():
theIssueSummary = theForm.cleaned_data['theSubject']
theMessageDesc = theForm.cleaned_data['theMessage']
theIssueDesc = '%s \n \n Username: %s \n \n User Email: %s' % \
(theMessageDesc, myRequestingUser, myRequestingUserEmail)
theIssue = json.dumps({
"fields": {
"project":
{
"key": "SUPPORT"
},
"summary": theIssueSummary,
"description": theIssueDesc,
"issuetype": {
"name": "Bug"
}
}
})
myRequest = urllib2.Request('http://MYURL')
myAuthString = base64.standard_b64encode('%s:%s' % ('USERNAME', 'PASSWORD'))
myRequest.add_header("Authorization", "Basic %s" % myAuthString)
theResult = urllib2.urlopen(myRequest, theIssue, {'Content-Type': 'application/json'})
myReturn = theResult.read()
if myReturn:
theNewKey = myReturn.key
return HttpResponse(json.dumps({
"success": True,
"theNewKey": theNewKey
}))
else:
return HttpResponse(json.dumps({
"success": False
}))
else:
theForm = ContactSupportForm()
theTest = 'crap'
else:
theForm = ContactSupportForm()
theTest = 'rubbish'
return render_to_response('contact-support.html',
{
'theForm': theForm,
'test': theTest
},
context_instance=RequestContext(theRequest)
)
HTML:
<h5>Contact Support</h5>
<div class="buttons" id="reload-support-form">
<a data-ignore="true" class="btn btn-mini" href="javascript:void(null);" id="show-sent" onClick="reLoadSupportForm();">
<i class="icon-refresh"></i> Reload Form
</a>
</div>
</div>
<h1>{{test}}</h1>
<div class="widget-content" id="support-message-container">
<div id="message-support-content">
<form action="" method="post" id="compose-message-form" class="form-horizontal">
{% csrf_token %}
{% for field in theForm %}
<fieldset class="control-group {% if field.errors %}error{% endif %}">
<label class="control-label" for="{{ field.auto_id }}">{{ field.label }}</label>
<div class="controls">
{{ field }}
{% if field.help_text %}
<span class="help-inline">{{ field.help_text }}</span>
{% endif %}
{% if field.errors %}
<span class="help-inline">{{ field.errors|striptags }}</span>
{% endif %}
</div>
</fieldset>
{% endfor %}
<div class="control-group">
<div class="controls">
<input id="support-message-submit" class="btn btn-primary" type="submit"/>
</div>
</div>
編集
以下の回答/コメントに従って、forms.pyを更新しましelse
た(ビューから2番目も削除しました):
class ContactSupportForm(forms.Form):
theSubject = forms.CharField(max_length=100)
theMessage = forms.CharField(widget=forms.Textarea(attrs={'cols': 55, 'rows': 12}))
error_css_class = 'error'
required_css_class = 'required'
ただし、私はまだテンプレートにフォームを取得theTest
しておらず、テンプレートにも取得していません。ビューはテンプレートを正しく返しますが、フォームまたは を返しませんtheTest
。