【发布时间】:2018-07-12 14:53:40
【问题描述】:
我有一种情况,有时我会显示一个表单,有时我不显示它。
其实有多个表单使用同一个Submit按钮。
当模板中未显示特定表单时,我该如何处理。
模板代码
{% extends BASE_TEMPLATE %}
{% load crispy_forms_tags %}
{% block title %}<h2>New Thread</h2>{% endblock %}
{% block content %}
<div class="col-md-6">
<form method="post" accept-charset="utf-8">{% csrf_token %}
{{ threadForm|crispy }}
{{ postForm|crispy }}
{% if SHOW_WIKI %}
{{ wikiFrom|crispy }}
{% endif %}
<input type="submit" class="btn btn-primary btn-sm" value="Submit"/>
</form>
</div>
{% endblock %}
这是查看代码
@login_required
def createThread(request, topic_title=None):
if topic_title:
try:
if request.method == 'POST':
topic = Topic.getTopic(topic_title)
threadForm = ThreadSUForm(request.POST, prefix='thread')
postForm = PostForm(request.POST, prefix='post')
show_wiki = getattr(settings, "REFORUMIT_ALLOW_WIKI_FOR_THREADS", False) and topic.is_wiki_allowed
wikiForm = WikiCreateForm(request.POST, prefix='wiki')
if threadForm.is_valid() and postForm.is_valid() and wikiForm.is_valid():
thread = threadForm.save(commit=False)
post = postForm.save(commit=False)
wiki = wikiForm.save(commit=False)
thread.op = post
thread.wiki_revision = None
post.setMeta(request)
wiki.setMeta(request)
if is_authenticated(request):
post.created_by = request.user
wiki.author = request.user
thread.save()
wiki.wiki_for = thread
wiki.save()
post.save()
thread.wiki_revision = wiki
thread.save()
return HttpResponseRedirect(thread.get_absolute_url)
else:
topic = Topic.getTopic(topic_title)
threadForm = ThreadSUForm(prefix='thread', initial={"topic": topic})
postForm = PostForm(prefix='post')
wikiForm = WikiCreateForm(prefix='wiki')
show_wiki = getattr(settings, "REFORUMIT_ALLOW_WIKI_FOR_THREADS", False) and topic.is_wiki_allowed
context = dict(threadForm=threadForm, postForm=postForm, wikiFrom=wikiForm, SHOW_WIKI=show_wiki)
return render(request, 'reforumit/create_thread.html', context)
except Topic.DoesNotExist:
pass
return redirect('topics')
【问题讨论】:
-
似乎线程形式一直存在?
-
@AnupYadav Wiki 表单是唯一的可选表单
标签: django django-forms django-crispy-forms