【发布时间】:2015-10-10 20:45:32
【问题描述】:
另一个我很担心的基本问题。我浏览过各种 Django 文档页面,也搜索过这个站点。我在这里发现的唯一内容是在 2013 年,它建议设置自定义过滤器模板。
无论如何,我正在尝试生成自己的表单,而不是使用 Django 自己的方式通过 {{ form }} 生成它。这只是为了让我可以控制表单的呈现方式。
我已经制定了各种访问所需信息的方法,例如(在我的 for item in form 循环中);
- item.help_text
- item.label_tag
- item.id_for_label
我正在尝试识别项目类型,以便我可以使用正确的输入类型,但是我正在努力确定 item.xxxx 应该是什么。由于这是通过 {{ form }} 正确显示的,我假设此信息在表单中的某处可用,只是努力找出如何访问它,以便我可以识别正确的输入类型。我正在手动执行此操作,因此我可以使用正确的 Bootstrap 样式来显示输入字段。
任何帮助将不胜感激(或只是指出正确的方向)。我对此很陌生,因此为我的非常基本的问题道歉,如果不认识我可以去问这些问题的人,这很困难。
问候
韦恩
不确定你是否需要它,但这里有一些代码;
表格:
class NewsForm(ModelForm):
class Meta:
model = News_Article
exclude = ('news_datetime_submitted', 'news_yearmonth', )
labels = {
'news_title': _('Enter News Title'),
}
help_texts = {
'news_title': _('Enter a title to give a short description of what the news is.'),
}
error_messages = {
'news_title': {
'max_length': _("News title is too long."),
},
}
查看(尚未在 POST 上工作,这只是 Django 文档中的内容,POST 是我接下来要解决的问题)
def create(request, dataset):
if dataset not in ['news', 'announcement']:
return HttpResponseRedirect(reverse('pages'))
rDict = {}
if request.method == 'POST':
if dataset == "news":
form = NewsForm(request.POST)
elif dataset == "announcement":
form = AnnouncementForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/home/')
else:
pass
else:
announcement = get_announcement()
if not announcement == None:
rDict['announcement'] = announcement
if dataset == "news":
rDict['form'] = NewsForm()
rDict['branding'] = {'heading': 'Create News Item', 'breadcrumb': 'Create News', 'dataset': 'create/' + dataset + '/'}
elif dataset == "announcement":
rDict['form'] = AnnouncementForm()
rDict['branding'] = {'heading': 'Create Announcement', 'breadcrumb': 'Create Announcement', 'dataset': 'create/' + dataset + '/'}
rDict['sitenav'] = clean_url(request.path, ['"', "'"])
rDict['menu'] = Menu.objects.all().order_by('menu_position')
# pdb.set_trace()
return render(request, 'en/public/admin/admin_create.html', rDict)
模板代码
<form action="/siteadmin/{{ branding.dataset }}" method="post">
{% csrf_token %}
{% for item in form %}
<div class="row">
<div class="col-xs-2 col-md-2">
</div>
<div class="col-xs-4 col-md-4">
<div class="panel-title pull-right">
{% if item.help_text %}
<img src="/static/images/info.png" height="20" width="20" aria-hidden="true" data-toggle="popover" title="{{ item.help_text }}"> 
{% endif %}
{{ item.label_tag }}
</div>
</div>
<div class="col-xs-4 col-md-4">
<div class="input-group">
<input type="{{ item.widget }}" class="form-control" placeholder="" aria-describedby="{{ item.id_for_label }}">
</div>
</div>
<div class="col-xs-2 col-md-2">
{% if forloop.last %}
<input type="submit" value="Submit" />
{% endif %}
</div>
</div>
{% endfor %}
</form>
【问题讨论】:
标签: python django forms django-forms