我开始在一个网站上工作,显然会有很多按钮,我仍然只有2个按钮要处理,我的一个视图已经有了这段代码来处理这两个表单提交
if request.method == "POST":
if "see" in request.POST:
seetagform = SeeTagForm(request.POST)
createform = CreateForm()
if seetagform.is_valid():
cd = seetagform.cleaned_data
tagstring = "_".join(cd["name"].split(' '))
return HttpResponseRedirect(reverse("base:see",args=(tagstring,)))
elif "create" in request.POST:
createform = CreateForm(request.POST)
seetagform = SeeTagForm()
if createform.is_valid():
cd = createform.cleaned_data
p = Event.objects.create(start=cd["datetime"])
tags = cd["tags"]
tags = tags.split(' ')
for tag in tags:
t = Tag.objects.get(name=tag)
t.events.add(p)
return HttpResponseRedirect(reverse("base:see",args=(tagstring,)))
else:
createform = CreateForm()
seetagform = SeeTagForm()
else:
createform = CreateForm()
seetagform = SeeTagForm()
好吧,据我所知,这是许多如果的和其他的只有2个按钮(但这里的一切都是需要的),所以我想知道它可能是混乱的,当我有12个按钮在我的网页上。这看起来不太像Python! 有没有更简单/更聪明的方法来处理许多表单提交?你知道吗
提前谢谢
我也是这样做的,只是在按钮名称中添加前缀,以便更清楚
@login_required def profile_view(request): message = None user = MyUser.objects.get(pk=request.user.pk) addresses = user.profile_address.all() AddressFormSet = modelformset_factory(Address, fields=['city','zip_code','address','phone','default_address', 'first_name','last_name']) address_formset = AddressFormSet(queryset=addresses) profile_form = ProfileForm(instance=user) pass_form = PasswordChangeForm() if request.method == "POST": if 'btn_profile' in request.POST: profile_form = ProfileForm(request.POST, instance=user) if profile_form.is_valid(): profile_form.save() messages.add_message(request, messages.INFO, 'Successfully changed your profile') return HttpResponseRedirect(reverse('profile')) if 'btn_pass' in request.POST: pass_form = PasswordChangeForm(request.POST) if pass_form.is_valid(): user.set_password(pass_form.cleaned_data['password1']) user.save() messages.add_message(request, messages.INFO, 'Successfully changed your password') return HttpResponseRedirect(reverse('profile')) if 'btn_address' in request.POST: address_formset = AddressFormSet(request.POST) if address_formset.is_valid(): for address_form in address_formset: if address_form.is_valid() and address_form.has_changed(): address = address_form.save(commit=False) address.user_profile = user address.save() return HttpResponseRedirect(reverse('profile')) orders = Order.objects.filter(user = user).order_by('-created') context = { 'address_formset': address_formset, 'pass_form': pass_form, 'profile_form':profile_form, 'message':message, 'orders':orders, } return render(request,'custom_auth/profile.html', context)
相关问题 更多 >
编程相关推荐