【问题标题】:Writing a Django ChoiceField that refreshes a page编写一个刷新页面的 Django ChoiceField
【发布时间】:2015-11-30 12:47:45
【问题描述】:

我正在向使用下拉列表的 Django 项目添加功能。选择列表中的选择时,将重新加载页面。不同之处在于选择的下拉选项的值然后传递给页面重新加载时的方法,否则正常呈现页面。

我相信我已经正确完成了功能的代码方面,但是当我选择一个下拉选项时,什么都没有发生!我是 Django 开发的新手(特别是 HTML 方面),因此我们将不胜感激。这是我的代码:

def view(request): 

if request.method == "POST":

    form = ChoiceForm(request.POST)
    if form.is_valid():

        form.save()
        value = form.cleaned_data['content']
        value = dict(form.fields['content'].choices)[value]
        print (value)

else:

    form = ChoiceForm()
    print("Printing default")
    value = "1";

...
data = method(val = value)
....

pageModel = {
             "page":page,
             "form": form,
            'table': table, 
             }

return render(request, 'url/example.html', pageModel)    
....    class ChoiceForm(forms.Form):

CHOICES = (
   (1, "Adwords"),
   (2, "Bing"), 
   (3, "Combined"), content = forms.ChoiceField(choices=CHOICES, required=False)

我的 HTML 块引用了表单:

<form action='url/where/view/is/located' method='post'>{% csrf_token %}
    {{ form.as_p }}
</form>

【问题讨论】:

    标签: python django forms


    【解决方案1】:

    如果没有 Javascript,您将无法按照说明执行此操作。

    仅从下拉列表中选择内容本身不会触发提交;通常,您还需要一个提交按钮,但如果您想自动执行此操作,则需要一些 JS 代码来监听 select 元素的 onchange 事件并提交表单。

    【讨论】:

    • 我想我会保持简单,然后添加一个提交按钮。
    【解决方案2】:

    这就是我所拥有的:

    from django.shortcuts import render, get_object_or_404, redirect
    from .models import *
    from .forms import *
    from simple_history.models import HistoricalRecords
    from datetime import date
    
    
    def wypozycz_tester(request, numer_seryjny):
        item = get_object_or_404(Tester, numer_seryjny=numer_seryjny)
        numer = item.numer_seryjny
        if request.method == "POST":
            form = testerForm(request.POST, instance = item, initial={'data_wypozyczenia': date.today()}))
            item.wypozyczony = True
            form.save()
            return redirect('display_testery')
    
        else:
            form = testerForm(instance=item)
            return render(request, 'wypozycz.html', {'form':form, 'numer':numer})
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2019-10-06
      • 2014-07-11
      相关资源
      最近更新 更多