【问题标题】:How to pass field from submitted form into url in Django?如何将提交表单中的字段传递到 Django 中的 url?
【发布时间】:2023-03-21 12:54:01
【问题描述】:

我正在尝试提交表单,保存到数据库,然后在新 url 上显示 clean_data。在表单中,我有一个名为 job_number 的字段。我想将cleaned_data 发送到127.0.0.1:8000/quotes/job_number

quote/views.py:

@login_required
def quote_view(request):
    data_form = QuoteInformationForm()
    if request.method == "POST":
        data_form = QuoteInformationForm(request.POST)
        if data_form.is_valid():
            data_form.save(commit=True)
            return redirect('quote')
        else:
            print('Error')
    return render(request, "index.html", {'data_form': data_form})

@login_required
def submitted_quote(request):
    return render(request, "quote.html")

urls.py:

urlpatterns = [
    path('home/', quote_view, name='home'),
    path('quote/', submitted_quote, name='quote'),

目前所做的一切都是使用 index.html 在http://127.0.0.1:8000/home/ 打开表单。当我提交时,它会将信息发送到数据库并将我重定向到http://127.0.0.1:8000/quotes。这可以。现在我只需要在这个 url 上显示清理后的数据并更改 url 以在末尾包含 job_number。我该怎么做?

【问题讨论】:

标签: python django django-views django-urls


【解决方案1】:

您需要像这样更改 url 模式:

urlpatterns = [
    path('home/', quote_view, name='home'),
    path('quote/<int:job_number>/', submitted_quote, name='quote'),
]

并提交_quotes():

@login_required
def submitted_quote(request,job_number):
     job = # Get Your job
     return render(request, "quote.html", {"job":job})

和:

@login_required
def quote_view(request):
    data_form = QuoteInformationForm()
    if request.method == "POST":
        data_form = QuoteInformationForm(request.POST)
        if data_form.is_valid():
            data_form.save(commit=True)
            return redirect('quote{}'.format(data_form.id))
        else:
            print('Error')
    return render(request, "index.html", {'data_form': data_form})

【讨论】:

  • 我想我需要诚实地了解更多关于视图的信息。这有点过头了。因此,我正在尝试获取一个可行的示例来学习。目前我收到错误“QuoteInformationForm”对象没有属性“id”。在我提交的引用中,我已经完成了“job = job_number.Object.get('job_number')” - 我猜这是错误的。我想我应该退后一步,现在就学习。
猜你喜欢
  • 1970-01-01
  • 2022-01-24
  • 2014-04-05
  • 2012-11-02
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 2018-11-19
  • 2010-11-03
相关资源
最近更新 更多