我在显示页面的输入框时遇到问题。在同一页面上,我想有两个视图,一个访问和检索数据,另一个访问表单。由于它是一个事件注册页面,第一个视图显示特定事件的详细信息,第二个视图是从事件本身中删除特定用户的视图。
我的views.py
def ShowSpecificEvent(request, eventslug):
if request.method == 'POST':
form = RemovalForm(request.POST)
if form.is_valid():
event = Event.objects.get(slug=eventslug)
context = {'event': event,}
updated_event = event.signed_up.remove(for_removal = form.cleaned_data['for_removal'],)
updated_event.save()
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
event = Event.objects.get(slug=eventslug)
context = {'event': event,}
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
def Remove(request, eventslug):
if request.method == 'POST':
form = RemovalForm(request.POST)
if form.is_valid():
event = Event.objects.get(slug=eventslug)
context = {'event': event,}
updated_event = event.signed_up.remove(for_removal = form.cleaned_data['for_removal'],)
updated_event.save()
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
return HttpResponseRedirect('base_remove_user.html')
我的模板
{% block content %}
event details...
{% if user.is_authenticated %}
{% if event.sign_up_is_live %}
<p><a href= "{% url eventattend event.slug %}"> Sign me up!</a></p>
<form action='' method='post'>
{% csrf_token %}
{% if form.errors %}<p>Please correct the following fields:</p>{% endif %}
<div class='register_div'>
{% if form.for_removal.errors %} <p class='error'>{{ form.for_removal.errors }}</p>{% endif %}
<p><label for='for_removal'{% if form.for_removal.errors %}class='error'{% endif %}>User to be removed:</label></p>
<p>{{ form.for_removal }}</p>
</div>
<p><input type='submit'></p>
</form>
{% endif %}{% endif %}
{% endblock %}
我读过this,我认为这是最相关的,但规定的方法并没有真正帮助。
我还想过拆分这两个页面,但是我无法在删除用户页面中检索eventlug。
提前致谢:)
更新
gutrt的回答非常有帮助,我已经设法通过将ShowSpecificEvent更改为以下内容来显示输入框:
def ShowSpecificEvent(request, eventslug):
event = Event.objects.get(slug=eventslug)
form = RemovalForm(request.POST or None)
context = {'event': event, 'form': form,}
if request.method == 'POST':
if form.is_valid():
updated_event = event.signed_up.remove(request.POST.get('for_removal'))
updated_event.save()
return HttpResponseRedirect('base_user_removed.html')
else:
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
return render_to_response('base_specific_event.html', context, context_instance=RequestContext(request))
但是,在提交表单后,我得到一个ValueError(对于带有基数为10的int()的无效文字:'a_technicolor_skye')其中a_technicolor_skye是我正在尝试删除的用户。有没有人有任何想法?顺便说一句,event.signed_up是一个多对多的字段,我把它设置为null = True和blank = True。
答案 0 :(得分:0)
您可以将所有信息传递到上下文变量中:
context = {'event': event, 'form': my_form}
然后两者都在您的模板中可用。请注意,这意味着您将最终使用1 view ,但计算该视图中页面的所有信息或其方法。