2011-05-04 12 views

cevap

29

Girdi türlerine bir ad verin ve bunları request.POST sözlüğünüzde arayın.

Örn .:

<form action="/" method="post"> 
    {% csrf_token %} 

    <input type="text" name="{{ email.id }}" value=" {{email}}"></td> 
    <td><input type="submit" value="Edit" name="_edit"></td> 
    <td><input type="submit" value="Delete" name="_delete"></td> 
</tr> 

ve

if request.POST: 
    if '_edit' in request.POST: 
     do_edit() 
    elif '_delete' in request.POST: 
     do_delete() 

DÜZENLEME gibi views.py şey

: Daniel'in comment başına k in d için d.has_key(k) değiştirildi. has_key, python 3.0'da kullanımdan kaldırılmıştır ve stil daha genel olarak tercih edilir, özellikle d sözlüğü değilse d.has_key(k) başarısız olur, ancak k in d, yinelenebilir (örneğin, dict, string, tuple, list, set) herhangi bir d için çalışır.).

+2

foo.has_key ('bar') 'Python 2.4'den beri '' bar '' olarak yazılmıştır. –

+0

@Daniel: Teşekkürler - 'd' nin neden yinelenebileceği için her şey için çalıştığı için neden tercih edildiğini içeren bir açıklama ile düzenlenmiştir. –

+2

Bir formda birden fazla gönderme düğmesi varsa ve kullanıcı Enter tuşuna basarsa, HTML'de hangi tuşun önce geldiğini otomatik olarak tıklayacağını unutmayın. –

4

, o zaman request.POST koleksiyonunda bunlara başvuruda olabilir, örneğin "eylem" demek: size yardımcı oluyor

def my_view(request): 
    action = request.POST.get('action') 
    if action == 'Edit': 
     #do edit 
    else: 
     # do delete 

Umut.

+0

unvan değişikliği, örneğin sonra kırılacak mı uluslararası hale getirilmesi. Yine de

0
<form action="/" method="post"> 
<tr> 
    <td><input type="text" name="{{ email.id }}" value=" {{email}}"></td> 
    <td><input type="submit" value="Edit" name="submit"> </td> 
    <td><input type="submit" value="Delete" name="submit"> </td> 
</tr> 
</form> 

views.py olacak -

def our_view(request): 
    if request.POST.get('submit') == 'Edit': 
     make_edit() 
    elif request.POST.get('submit') == 'Delete': 
     make_deletes() 
    else: 
     raise Http404() 
+0

Bunun işe yaradığını düşünmüyorum. 'Request.POST' sözlüğüne bakın. '{' 3 ':' [email protected] ',' edit ':' Edit '} 'gibi bir şeyden oluşacaktır. '' Request.POST '' dan '' text '' 'i alarak e-posta adresine nasıl başvurabileceğiniz gibi, değerlerini almak için giriş düğmesinin adını belirtmeniz gerekir. –

6

Bu soru uzun zaman önce istendi biliyorum ama burada kayıt için sınıf tabanlı görünümleri kullanarak bir çözümdür. Dr jimbob'un cevabındakiyle aynı html'yi kullanır.

from django.views.generic.edit import FormView 

class MyView(FormView): 
    template_name = 'mytemplate.html' 
    form_class = MyForm 

    def form_valid(self, form): 
     if '_delete' in self.request.POST: 
      # do delete 
     elif '_edit' in self.request.POST: 
      # do edit 

Not form_valid varsayılan davranışıdır:

return HttpResponseRedirect(self.get_success_url()) 
+0

Formda: "if" anahtarını kullanıyorum.data: form.instance.field = special_value'' –

İlgili konular