Skip to main content
 首页 » 编程设计

python之Django : Maintaining option selected in HTML template

2024年09月07日23soundcode

当我在 html 模板中使用 django if 函数来设置对所选选项标签的更改时,但它一直选择 --SELECT-- 选项

 <form  method="post"> 
 
<select name="name"> 
<option >--SELECT--</option> 
  {% for job in all_pekerjaan%} 
  <option value="{{job.id}}" 
         {% if job.id == current_name %}selected="selected"{% endif %}> 
         {{job.name}} 
     </option> 
    {% endfor %} 
</select> 
{% csrf_token %} 
 
  <input type="submit" class="btn btn-success" value="submit" > 
</form> 

这是我的views.py

from django.http import HttpResponse 
from .models import daftartabel, Pekerjaan 
from .forms import form1, form2 
from django.template import loader 
from django.shortcuts import render 
 
def index(request): 
 
    if request.method == 'POST': 
        #print(request.POST['name']) 
        current_name=request.POST['name'] 
        all_datas = daftartabel.objects.filter(pekerjaan_id=request.POST['name']) 
    else: 
        all_datas = daftartabel.objects.all() 
    all_pekerjaan = Pekerjaan.objects.all() 
    template = loader.get_template('tabel/index.html') 
    #print(all_datas) 
    #print(all_pekerjaan) 
    context = { 
        'all_datas' : all_datas, 
        'all_pekerjaan' : all_pekerjaan, 
        'current_name' : request.POST['name'], 
    } 
    #print (context) 
    print(type(context['current_name'])) 
 
    return HttpResponse(template.render(context, request)) 

我的forms.py 类

class form2(forms.Form): 
    name = forms.CharField(max_length=100) 

有人知道如何解决这个问题吗?

请您参考如下方法:

问题已解决,将“current_name”更改为整数会有所帮助。

if request.method == 'POST': 
        context = { 
            'all_datas' : all_datas, 
            'all_pekerjaan' : all_pekerjaan, 
            'current_name' : int(request.POST['name']), 
            } 
    else: 
                context = { 
                    'all_datas' : all_datas, 
                    'all_pekerjaan' : all_pekerjaan, 
                    }