以下是我的代码
views.py
from django.shortcuts import render
from .forms import MedicineForm
from .models import Medicine
def index(request):
all_medicine = Medicine.objects.order_by('id')
return render(request, 'medicine/index.html', {'all_medicine': all_medicine})
def add(request):
if request.method == 'POST':
form = MedicineForm(request.POST)
if form.is_valid():
new = Medicine()
new.name = form.cleaned_data['药品名称']
new.price = form.cleaned_data['药品价格']
new.number = form.cleaned_data['药品编号']
new.sort = form.cleaned_data['药品分类']
new.unit = form.cleaned_data['计价单位']
new.save()
return render(request, 'medicine/index.html')
else:
form = MedicineForm()
return render(request, 'medicine/add.html', {'form': form},)
forms.py
from django import forms
class MedicineForm(forms.Form):
药品编号 = forms.IntegerField()
药品名称 = forms.CharField(max_length=100)
药品价格 = forms.IntegerField()
jj_choice = {
'瓶': '瓶',
'包': '包',
'盒': '盒',
}
计价单位 = forms.ChoiceField(
choices=jj_choice
)
药品分类 = forms.CharField(max_length=100)
add.html:
{% extends 'polls/index.html' %}
{% block medicine_form %}
<form action="http://localhost:8000/medicine/add/" method="post">
{% csrf_token %}
{{ form }}
<input type="submit" value="添加药品" />
</form>
{% endblock %}
回溯:
内部的文件“E:\ p \ lib \ site-packages \ django \ core \ handlers \ exception.py” 39. response = get_response(request)
_get_response中的文件“E:\ p \ lib \ site-packages \ django \ core \ handlers \ base.py” 187. response = self.process_exception_by_middleware(e,request)
_get_response中的文件“E:\ p \ lib \ site-packages \ django \ core \ handlers \ base.py” 185. response = wrapped_callback(request,* callback_args,** callback_kwargs)
添加文件“F:\ ddjj \ x \ mysite \ medicine \ views.py” 25. return render(request,'medicine / add.html',{'form':form},)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ shortcuts.py” 30. content = loader.render_to_string(template_name,context,request,using = using)
render_to_string中的文件“E:\ p \ lib \ site-packages \ django \ template \ loader.py” 68. return template.render(context,request)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ backends \ django.py” 66. return self.template.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 208. return self._render(context)
_render中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 199. return self.nodelist.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 994. bit = node.render_annotated(context)
render_annotated中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 961. return self.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ loader_tags.py” 174. return compiled_parent._render(context)
_render中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 199. return self.nodelist.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 994. bit = node.render_annotated(context)
render_annotated中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 961. return self.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ loader_tags.py” 70. result = block.nodelist.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 994. bit = node.render_annotated(context)
render_annotated中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 961. return self.render(context)
渲染中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 1050. return render_value_in_context(output,context)
render_value_in_context中的文件“E:\ p \ lib \ site-packages \ django \ template \ base.py” 1028. value = force_text(value)
force_text中的文件“E:\ p \ lib \ site-packages \ django \ utils \ encoding.py” 76. s = six.text_type(s)
文件“E:\ p \ lib \ site-packages \ django \ utils \ html.py”in 391. klass。 str = lambda self:mark_safe(klass_str(self))
str 中的文件“E:\ p \ lib \ site-packages \ django \ forms \ forms.py” 123. return self.as_table()
as_table中的文件“E:\ p \ lib \ site-packages \ django \ forms \ forms.py” 271. errors_on_separate_row = False)
_html_output中的文件“E:\ p \ lib \ site-packages \ django \ forms \ forms.py” 226.'field':six.text_type(bf),
文件“E:\ p \ lib \ site-packages \ django \ utils \ html.py”in 391. klass。 str = lambda self:mark_safe(klass_str(self))
str 中的文件“E:\ p \ lib \ site-packages \ django \ forms \ boundfield.py” 43.返回self.as_widget()
as_widget中的文件“E:\ p \ lib \ site-packages \ django \ forms \ boundfield.py” 101. return force_text(widget.render(name,self.value(),attrs = attrs))
渲染中的文件“E:\ p \ lib \ site-packages \ django \ forms \ widgets.py” 537. options = self.render_options([value])
render_options中的文件“E:\ p \ lib \ site-packages \ django \ forms \ widgets.py” 560.对于option_value,self.choices中的option_label:
异常类型:/ medicine / add /的ValueError 异常值:没有足够的值来解包(预期2,得1)
答案 0 :(得分:1)
你有
return render(request, 'medicine/add.html', {'form': form},)
你需要
return render(request, 'medicine/add.html', {'form': form})
,
最后使它成为元组
答案 1 :(得分:1)
jj_choice = {
'瓶': '瓶',
'包': '包',
'盒': '盒',
}
应该写成,
jj_choice = (
('瓶', '瓶'),
('包', '包'),
('盒', '盒'),
)
key,text tuples。