0
私はDjangoで非常に新しいです。これがバグかエラーかはわかりません。ここでDjango 2.0 CreateViewが動作しません
は
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
そして、ここではURLです(一般的なクラスベースのビューのために)gcbvと呼ばれるアプリで私のモデルである:
: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'),
]
そしてここでは、関連する図であり、
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'}
テンプレートは次のとおりです。
{% 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 %}
データがデータベースに保存されていないように見えますが、管理ページで直接同じデータを手作業で追加すると、すべて正常に動作します。 VehicleDetailView
が関連するテンプレートを見つけて情報を表示したことを示す別のスクリーンショットを添付しました。
ご協力いただければ幸いです。
NB:パスの代わりに関数ビューと正規表現を使用するとすべてうまくいきました。
OK、これは私たちseptuagenariansは "上級瞬間"と呼ばれるものです。私はこのコードを2日間注視しており、明白なことは見ませんでした。
method = "POST"!
ませ
述べたように、アクションが=テンプレートの4行目の "POST"
多く、多くの感謝
"ポスト" と同じでなければなりません以下の答えでは、 'method = 'post''のときに' action'という属性を呼び出しています –