Skip to main content
 首页 » 编程设计

python之使用 HTML 模板的 Django 表单

2025年05月04日40落叶

我是 Django 的新手,我一直在尝试将此表单发送到 POST。我已经阅读了有关表单的文档,但我对它有点困惑,因为我不确定如何在创建 forms.py 文件时实现 Jquery 日期选择器或下拉菜单。

我已经创建了模板,我可以访问它,它的格式完全符合我的要求,但是我不知道如何将它发布到 POST。这个想法是获取表单中的数据并将其插入到 Postgres 表中。

模板提交.py

{% extends 'website/header.html' %} 
{% block content %} 
    <p><b>Submit Job</b></p> 
    <form action="" method="post"> 
    {% csrf_token %} 
        <b>Select Asset to transcode</b> 
        <p>Material ID: 
            <input type="text" name="material_id" size="30" value="" id="keyword"/> 
        </p> 
        <p>Profile: 
            <select name="workflow"> 
                <option value="">Select a transcode Profile</option> 
                {%  for i in object_list %} 
                    <option value="{{ i.name }}">{{ i.name }}</option> 
                {% endfor %} 
            </select> 
        </p> 
        <script> 
            $(function() { 
                $( "#start_datepicker" ).datepicker({ 
                    dateFormat: 'dd-mm-yy' 
                }); 
            }); 
        </script> 
        <p>License Start Date: <input type="text" id="start_datepicker" name="start_date"></p> 
        <script> 
            $(function() { 
                $( "#end_datepicker" ).datepicker({ 
                    dateFormat: 'dd-mm-yy' 
                }); 
            }); 
        </script> 
        <p>License End Date: <input type="text" id="end_datepicker" name="end_date"></p> 
        <p> 
            <input type="submit" name="submit" /> 
        </p> 
    </form> 
{% endblock %} 

View .py

from django.shortcuts import render 
 
def submit(request): 
    if request.method == 'POST': 
        material_id = request.POST['material_id'] 
        workflow = request.POST['workflow'] 
        start_date = request.POST['start_date'] 
        end_date = request.POST['end_date'] 
        return render(request, 'submit/submit.html') 
 
    else: 
        return render(request, 'submit/submit.html') 

这是我遇到的错误:

Method Not Allowed (POST): /submit/ 
[08/Feb/2017 17:28:49] "POST /submit/ HTTP/1.1" 405 0 

我做错了什么?

编辑

这是 URL 文件:

我的网站 url.py

from django.conf.urls import url, include 
from django.contrib import admin 
 
urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('website.urls')), 
    url(r'^submit/', include('submit.urls')), 
    url(r'^repo/', include('asset_db.urls')), 
] 

提交url.py

from django.conf.urls import url 
from django.views.generic import ListView 
from asset_db.models import Profiles 
 
urlpatterns = [ 
    url(r'^$', ListView.as_view(queryset=Profiles.objects.all().order_by("id"), template_name='submit/submit.html')), 
] 

请您参考如下方法:

您正在为此网址使用 ListView。但是 ListView 只允许 GET 请求。这就是为什么当它使用 POST 方法获取请求时。它给出错误方法不允许。 在您的 views.py 中为此 url 创建一个 View 并定义 get 和 post 方法。