简体   繁体   English

Django 2.0 CreateView无法正常工作

[英]Django 2.0 CreateView not working

I am very new in Django. 我是Django的新手。 Not sure whether this is a bug or an error. 不确定这是错误还是错误。

Here is my model in an app called gcbv (for generic class-based view) 这是我在名为gcbv的应用程序中的模型(用于基于类的通用视图)

from django.db import models
from core.models import TimeStampModel
from django.urls import reverse
# Create your models here.
class Vehicle(TimeStampModel):
    maker = models.CharField(max_length=100)
    model_year = models.IntegerField()
    vehicle_type = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)
    vehicle_model = models.CharField(max_length=100)
     website = models.URLField(max_length=100, blank=True)
    email = models.EmailField(max_length=100, blank=True)
    notes = models.TextField(blank=True, default='')
    def __str__(self):
        x = self.maker + ' ' + self.vehicle_model
        return x

And here are the URLs: 这是URL:

from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
from . import views
from django.urls import reverse
#from django.views.generic.base import TemplateView

app_name = 'gcbv'

urlpatterns = [
    path('sub1/', views.SubView.as_view(), name='sub1'),
    path('vehicle_list/', views.VehicleListView.as_view(),
        name = 'vehicle_list'),
    path('vehicle/<str:slug>/', 
       views.VehicleDetailView.as_view(), 
        name='vehicle_detail'),
    path('vehicle/create', views.VehicleCreateView.as_view(),
        name='vehicle_create'),    
    path('', views.IndexTemplateView.as_view(), name='index'),
]

And here is the relevant view: 这是相关视图:

class VehicleCreateView(CreateView):    
    model = Vehicle
    fields = ['maker', 'model_year', 'vehicle_type', 'slug',
        'vehicle_model', 'website', 'email', 'notes']
    labels = {'maker':'Maker', 'model_year':'Year', 
        'vehicle_type':'Type', 'vehicle_model':'Model',
        'website':'Website', 'email':'Email', 'notes':'Notes'}

Here is the template: 这是模板:

{% extends "core/base.html" %}
{% block body_block %}
    <h1>Vehicle Create for GCBV</h1>
    <form action="POST" action="">
        {% csrf_token %}
        {{ form.as_p }}
        <button name="submit" class="btn btn-primary">Submit</button>
    </form>
    <h1>End Vehicle Create for GCBV</h1>
{% endblock %}

It looks as if the data aren't saved in the database, but when i'm adding the same data by hand directly in the admin page, everything works fine. 好像数据没有保存在数据库中,但是当我直接在管理页面中手动添加相同的数据时,一切正常。 I've attached another screenshot showing that VehicleDetailView has found the relevant template and rendered the information. 我已附加了另一个屏幕截图,显示VehicleDetailView已找到相关模板并呈现了信息。

Any help would be greatly appreciated. 任何帮助将不胜感激。

NB: Everything worked fine when I use function views and regex instead of path. 注意:当我使用函数视图和正则表达式而不是路径时,一切工作正常。


Form 形成 呈现的表单模板

After submit 提交后 点击提交后

List 名单 点击提交后

Details 细节 点击提交后

OK, this is what we septuagenarians call a "senior moment". 好吧,这就是我们七十年代的人所说的“高级时刻”。 I have been staring at this code for two days and did not see the obvious. 我已经盯着该代码两天了,却没有发现明显的问题。

method="POST"! 方法= “POST”!

NOT

action="POST" 行动= “POST”

Many, many thanks 非常感谢

In the fourth line of your template, method should be equal to "post" 在模板的第四行中,方法应等于“ post”

{% extends "core/base.html" %} 

{% block body_block %}

 <h1>Vehicle Create for GCBV</h1> 

<form method="POST" action=""> 
{% csrf_token %}
 {{ form.as_p }}
 <button name="submit" class="btn btn-primary">Submit</button> 
</form> 
<h1>End Vehicle Create for GCBV</h1>
 {% endblock %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM