python 如何使用URL参数预填充表单(Django)

jm81lzqq  于 2023-01-19  发布在  Python
关注(0)|答案(1)|浏览(193)

我想用URL参数预填表单,但我不确定应该如何配置URL。我需要填写多个字段,所以使用URL参数仍然是最好的方法吗?在我复习的教程中,大多数情况下只使用GET请求中的1或2个参数。在我看来,我目前只处理一个字段,因为我有一个参数的麻烦。您可以在表单模型中看到我想填写的其他字段。任何帮助都非常感谢!
views.py

def new_opportunity_confirm(request):
    form_class = OpportunityForm

    account_manager = request.GET.get('account_manager')

    form = form_class(initial={'account_manager': account_manager})

    return render(request, 'website/new_opportunity_confirm.html', {'form': form})

urls.py

re_path(r'new_opportunity/new_opportunity_confirm/(?P<account_manager>\w+)/$', view=views.new_opportunity_confirm,
         name='new_opportunity_confirm'),

new_opportunity_confirm.html

<form action="" method="post" name="newOpportunityForm" id="newOpportunityForm">
                {% csrf_token %}
                <div class="field">
                    <label class="label">Account Manager:</label>
                    <div class="select">
                        <select name="account_manager" id="account_manager" required>
                            <option value="{{ form }}">{{ form }}</option>
                        </select>
                    </div>
                </div>
9vw9lbht

9vw9lbht1#

这取决于你是否想让你的参数成为url的一部分,在你的情况下,我建议不要,但是让我们看看这两种方法。
对于GET参数(url?var 1 =poney&var2=unicorn):你不需要配置你的url。Django会为你做这些工作,你只需要配置询问点之前的内容。然后你可以使用request.GET.get("var1")访问那些,或者如果你想在找不到的情况下使用默认值request.GET.get("var1", "default")。在你的模板中,你可以使用{{ request.GET.var1 }}访问它。
对于URL(url/poney/unicorn)中的参数:您需要配置url来捕获您想要的部件,并且您需要在接收视图中有一个参数来获取URL中的部件:

def new_opportunity_confirm(request, account_manager):

然后,您可以像访问任何其他变量一样访问它,如果您想在模板中访问它,则可以将它发送到模板。
同样,第二种方法似乎并不适合你想达到的目标。你已经达到了一半,你只是混合了两种方法。

相关问题