使用 HTML 模板的 Django 表单 [英] Django form using HTML template

查看:26
本文介绍了使用 HTML 模板的 Django 表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm new to Django and I have been trying to get this form to POST. I have read the documentation on forms but i'm a bit confused by it as I am not sure how to implement the Jquery date picker or drop down menu if i create a forms.py file.

我已经创建了模板,我可以访问它,它的格式与我想要的完全一样,但是我无法练习如何将它发送到 POST.这个想法是将表单中的数据插入到 Postgres 表中.

I have created the template and i can access it and it formats exactly how i want, however I can't workout how to get it to POST. The idea is to take the data in the form and insert it into a Postgres table.

模板提交.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 %}

视图.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 文件:

Here are the URL files:

我的站点 url.py

mysite 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 创建一个视图并定义 get 和 post 方法.

You are using ListView for this url. But ListView allowed only GET request. That's why when it get request with POST method. It is giving error METHOD NOT ALLOWED. Create a view for this url in your views.py and define get and post method.

这篇关于使用 HTML 模板的 Django 表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆