我在不使用管理应用程序的情况下将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 %}
我的views.py:
from task99_app import forms
from django.views.generic import ListView
from django.views.generic import DetailView
from django.views.generic.edit import CreateView
from django.views.generic.edit import UpdateView
from django.views.generic.edit import DeleteView
from .models import Card
# Create your views here.
def home(request):
return render(request, 'home.html')
class CardList(ListView):
model = Card
class CardCreate(CreateView):
form_class = Card
class CardDetail(DetailView):
model = Card
class CardUpdate(UpdateView):
model = Card
class CardDelete(DeleteView):
model = Card
我的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)
和我的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)
我已经看到其他人发生过这种情况,但是我对它们的代码了解得不够深,无法理解如何解决我的问题,但是我感觉如此接近。
在CardCreate
视图中,您已经将model用作form_class
,而不是您的Form
:
class CardCreate(CreateView):
model = Card
form_class = CardForm
请注意,在UpdateView
中,您忘记设置form_class
。这本身不是必需的,但是您需要指定fields
[Django-doc]。但是,您可以使用相同的fields
:
form_class