【问题标题】:Django 3.0: Unable to get value in view of selected option in templateDjango 3.0:鉴于模板中的选定选项无法获取价值
【发布时间】:2023-03-28 01:29:01
【问题描述】:

我是 django 的初学者。而且,我无法查看用户选择的选项的值。我必须在那里应用一些逻辑。

views.py

def shop(request):

    if request.GET.get('featured'):
        featured_filter = request.GET.get('featured')
        print(featured_filter) #debugging purpose
    else:
        print("\n\nnone\n\n") #debugging purpose

    bookz = Book.objects.order_by('title')
    var = {'books': bookz, 'range': 10}
    return render(request, 'bookrepo/shop.html', context=var)

shop.html

<form action="{% url 'bookrepo:shop' %}" method="GET">
    <select name="featured" class="custom-select-lg custom-select">
        <option selected><h1>Filter</h1></option>
        <option value="pricelow">Low price</option>
        <option value="pricehigh">High price</option>
        <input type="submit" name="featured" value="Filter" />
    </select>
</form>

这些选项与模型无关。 所以现在,当我选择低价并按下按钮时,我得到了这个:(在 django 控制台中)

[10/May/2020 00:18:20] "GET /shop/?featured=pricehigh&featured=Filter HTTP/1.1" 200 47486
[10/May/2020 00:18:20] "GET /static/js/js.dom.changer.js HTTP/1.1" 304 0
Filter
[10/May/2020 00:18:24] "GET /shop/?featured=pricelow&featured=Filter HTTP/1.1" 200 47486

如您所见,“过滤器”正在打印。但我想要的是特色的价值,比如 pricelow 或 pricehigh。

【问题讨论】:

    标签: django django-forms django-views django-templates


    【解决方案1】:

    发生这种情况的原因是因为您的请求有 两个 featured 值:pricehighFilter,实际上:

    /shop/?<b>featured=pricehigh</b>&amp;<b>featured=Filter</b>

    第二个是由submit 按钮引起的。您可以简单地从按钮中删除 name="…" 属性:

    <form action="{% url 'bookrepo:shop' %}" method="GET">
        <select name="featured" class="custom-select-lg custom-select">
            <option selected><h1>Filter</h1></option>
            <option value="pricelow">Low price</option>
            <option value="pricehigh">High price</option>
            <input type="submit" value="Filter" />
        </select>
    </form>

    【讨论】:

    • 谢谢。有效。我明白你的意思是从按钮中删除名称属性。就我而言,它是 name="featured" 而不是 name="hellip;"。那我理解你的意思了吗?
    • @Sayyam:hellip 是一个错误渲染的省略号 :) 用于引用属性部分 :)
    • 很好 :) 有没有办法在没有提交按钮的情况下获取所选“选项”的值?
    • @Sayyam:你提交表单,然后视图旨在读取数据。您可以使用 AJAX 调用来提交例如表单,而无需访问新页面:simpleisbetterthancomplex.com/tutorial/2016/08/29/…
    • 我知道我很粘人。但是你也可以回答这个link 吗?你在 Django 中看起来很专业。我对蛞蝓一无所知,我真的需要回答我的问题。谢谢:)
    猜你喜欢
    • 2020-11-04
    • 1970-01-01
    • 2011-10-02
    • 2011-09-24
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2018-04-05
    • 2018-02-03
    相关资源
    最近更新 更多