我无法将用户的名称从数据库传递到views.py中的docx文件
我正在尝试实施以下内容:
1-用户输入姓名,提交,重定向到
带下载按钮的2-页面。点击后,
使用用户名作为文件名生成3- docx文件。这是我拥有的
models.py
class Booking(models.Model):
name = models.CharField(max_length=255)
views.py
class BookingView(ListView):
model = Booking
template_name = "docbuilder/doc_maker.html"
doc = Document()
doc.add_paragraph('this_is_where_name_should_go')
doc.save('this_is_also_where_name_should_go.docx')
template = 'docbuilder/doc_maker.html'
doc_maker.html
{% extends 'base.html' %}
{% block content %}
<form action="" method="POST">{% csrf_token %}
<select>
{% for i in object_list %}
<option value="{{ i.name }}">{{ i.name }}</option>
{% endfor %}
</select>
<input type="submit" value="Download">
</form>
{% endblock %}
答案 0 :(得分:1)
以下是填充docx字段的解决方案。
我会尽快更新下载功能。
我的解决方案
<强>模型强>
class Booking(models.Model):
name = models.CharField(max_length=255)
观看次数1
显示文本字段并存储名称
class BookingCreate(CreateView):
model = Booking
success_url = 'docbuilder/download.html'
<强>形式强>
创建包含所有存储名称的下拉菜单
class DocForm(forms.Form):
name = forms.ModelChoiceField(queryset=Booking.objects.all().order_by('name'))
观点2
显示包含存储名称的下拉菜单,并使用所选数据创建docx并将其存储在本地
def BookingView(request):
form = DocForm()
if request.method == "POST":
form = DocForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
doc = Document()
doc.add_paragraph('It worked!')
doc.save(('{0}.docx').format(name))
return HttpResponseRedirect('congrats.html')
return render(request, 'docbuilder/doc_maker.html',{'form': form })
<强>模板强>
<form action="" method="POST">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Download">
</form>