Python Card()得到一个意外的关键字参数';首字母';

Python Card()得到一个意外的关键字参数';首字母';,python,django,Python,Django,我在不使用admin应用程序的情况下创建了一个CRUD接口,这对于Python和Django来说还是很新的,但是当我创建一个条目时,它会抛出标题中的错误 以下是目标页面: <form method="post"> {% csrf_token %} Card Name:<br> <input type="text" name="name"><br> Mana Cost:<br> <input type="text

我在不使用admin应用程序的情况下创建了一个CRUD接口,这对于Python和Django来说还是很新的,但是当我创建一个条目时,它会抛出标题中的错误

以下是目标页面:

<form method="post">
  {% csrf_token %}
  Card Name:<br>
  <input type="text" name="name"><br>
  Mana Cost:<br>
  <input type="text" name="mana_cost"><br>
  Supertype:<br>
  <input type="text" name="supertype"><br>
  Keyword 1:<br>
  <input type="text" name="keyword_1"><br>
  Keyword 2:<br>
  <input type="text" name="keyword_2"><br>
  Keyword 3:<br>
  <input type="text" name="keyword_3"><br>
  Rules Text:<br>
  <input type="text" name="rules_text"><br>
  Power & Toughness:<br>
  <input type="text" name="power_toughness"><br>
  <input type="submit" value="Add Card"><br>
{% endblock %}

my forms.py:

from django import forms


class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)
和my models.py:

from django import forms

class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)
我见过其他人也发生过这种情况,但我对他们的代码理解得不够透彻,无法理解如何修复我的代码,但我感觉非常接近

编辑:url.py:

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from task99_app import views

urlpatterns = [
    url('admin/', admin.site.urls),
    url(r'form/$', views.CardCreate.as_view(), name='card_create'),
    url(r'^$', views.home, name='home'),
    url(r'card_list/$', views.CardList.as_view(), name='card_list'),
    url(r'card/<int:pk>', views.CardDetail.as_view(), name='card_details'),
    url(r'delete/<int:pk>', views.CardDelete.as_view(), name='card_delete'),
    url(r'update/<int:pk>', views.CardUpdate.as_view(), name='card_update'),
    ]
来自django.contrib导入管理
从django.url导入路径
从django.conf.url导入url
从task99_应用程序导入视图
URL模式=[
url('admin/',admin.site.url),
url(r'form/$,views.CardCreate.as_view(),name='card_create'),
url(r'^$',views.home,name='home'),
url(r'card\u list/$,views.CardList.as\u view(),name='card\u list'),
url(r'card/,views.CardDetail.as_view(),name='card_details'),
url(r'delete/,views.CardDelete.as_view(),name='card_delete'),
url(r'update/,views.CardUpdate.as_view(),name='card_update'),
]

在您的
CardCreate
视图中,您将模型用作
form\u class
,而不是
表单

class CardCreate(CreateView):
    model = Card
    form_class = CardForm
class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)

    class Meta:
        model = Card
        fields = '__all__'
此外,您需要在
卡片表单中指定型号:

class CardCreate(CreateView):
    model = Card
    form_class = CardForm
class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)

    class Meta:
        model = Card
        fields = '__all__'

在您的
CardCreate
视图中,您将模型用作
form\u class
,而不是
表单

class CardCreate(CreateView):
    model = Card
    form_class = CardForm
class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)

    class Meta:
        model = Card
        fields = '__all__'
此外,您需要在
卡片表单中指定型号:

class CardCreate(CreateView):
    model = Card
    form_class = CardForm
class CardForm(forms.ModelForm):
    name = forms.CharField(max_length=80)
    mana_cost = forms.CharField(max_length=12)
    supertype = forms.CharField(max_length=30)
    keyword_1 = forms.CharField(max_length=20)
    keyword_2 = forms.CharField(max_length=20)
    keyword_3 = forms.CharField(max_length=20)
    rules_text = forms.CharField(max_length=500)
    power_toughness = forms.CharField(max_length=10)

    class Meta:
        model = Card
        fields = '__all__'

您是否也可以共享
urls.py
文件?您是否可以共享
urls.py
文件?执行此操作后,页面现在返回“ModelForm未指定模型类”错误。有什么建议吗?@Etherealscorpions:你忘了在你的
卡片上指定型号了。啊,我的错。“模特”这个词看起来不再真实了。好吧,应用这个词,我现在可以开始讨论这个表单了。但是,点击“确认”会使我遇到一个与参数(1,)“未找到”相反的“卡片详细信息”。@Etherealscorpions:这是正常的,您使用
path(…)
s的语法,但是使用
url(…)
,您不能将两者混合使用。将URL转换为路径(..)
。执行此操作后,页面现在返回“ModelForm未指定模型类”错误。有什么建议吗?@Etherealscorpions:你忘了在你的
卡片上指定型号了。啊,我的错。“模特”这个词看起来不再真实了。好吧,应用这个词,我现在可以开始讨论这个表单了。但是,点击“确认”会使我遇到一个与参数(1,)“未找到”相反的“卡片详细信息”。@Etherealscorpions:这是正常的,您使用
path(…)
s的语法,但是使用
url(…)
,您不能将两者混合使用。将URL转换为路径(..)