【问题标题】:Django HTML Send POST data to url as PK value when submittingDjango HTML在提交时将POST数据作为PK值发送到url
【发布时间】:2021-09-30 21:39:55
【问题描述】:

我有一个只是日期字段和提交按钮的表单

Forms.py

from django import forms
from datetime import date

class DateInput(forms.DateInput):
    input_type = 'date'

class HomeForm(forms.Form):
    EnterDate = forms.DateField(widget=DateInput, initial=date.today())

由于用户请求,我只想将数据发送到这样的url

首页/2021-07-01

所以我尝试为我的 html 表单执行此操作,只需将 form.EnterDate.value 粘贴在表单操作部分中,但它仅在第二次尝试时有效。

<form method="POST" class="form-inline my-2 my-lg-0" action="{% url 'mint-post' form.EnterDate.value  %}">
{% csrf_token %}


<label for="{{form.EnterDate.id_for_label}}">Enter Date</label>
{{form.EnterDate}}

<button class="btn btn-primary my-2 my-sm-0" type="submit">Submit Date</button>
#Inital loading the form
def mintHome(request):
    form = HomeForm()

    context = {
        'form': form }
    return render(request, 'mintyHome.html', context)
    
#after Post   
 def mintHomePost(request, pk):
    if request.method =='POST':
        form = HomeForm(request.POST)
        if form.is_valid():
            datePost = form.cleaned_data['EnterDate']
            stringDate = datePost.strftime("%Y%m%d")
    context = {
        'form': form }
    return render(request, 'mintyHome.html', context)

我在这里做了一个例子:

https://alisayt.pythonanywhere.com/minty/home

它仅在第二次提交时发送 form.EnterDate.value,而不是第一次。

【问题讨论】:

    标签: html django django-forms


    【解决方案1】:

    您是否希望将 POST 请求发送到基于当前日期的 URL?还是基于用户输入的 URL?

    模板代码{% url 'mint-post' form.EnterDate.value %}只在你请求页面时在服务器上执行一次,而不是在你更改日期输入并提交POST请求时。

    如果您希望操作 URL 随用户输入而改变,这必须在客户端发生,即。 e.使用 JavaScript。

    【讨论】:

      猜你喜欢
      • 2018-10-27
      • 2018-09-17
      • 1970-01-01
      • 2016-07-31
      • 2016-09-26
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      相关资源
      最近更新 更多