簡體   English   中英

Django-處理大量表格

[英]Django - handling a large number of forms

我開始在一個網站上工作,該網站顯然會有很多按鈕,但我仍然只有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個按鈕有很多if和else(但是這里需要所有),所以我想知道當我在頁面上有12個按鈕時可能會感到困惑。 這看起來不太pythonic! 有沒有更簡單/更聰明的方法來處理許多表單提交?

提前致謝

我也是這樣做的,只是在按鈕名稱上添加前綴就更清楚了

@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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM