2014-09-25 67 views
-3

我無法從數據庫到DOCX文件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

要求憐憫不會讓你任何。我建議你閱讀一下如何寫出一個好問題。這個問題的主要問題在於它太寬泛;你基本上要求我們爲你做75%的工作。剝離這一點,以阻止你的進步*現在*,只是沒有更多。給我們任何代碼拒絕預算,以及所有意想不到的行爲,崩潰和回溯相關。我們會幫助你越過山丘,但山只是你的攀登。 – Veedrac 2014-09-25 06:46:47

+0

@Veedrac我更新了最好的理解。 PS問題不在於錯誤或錯誤。問題是我不知道從哪裏開始。如果您認爲某人無用地翻轉並滾動瀏覽文本幾個小時,您就錯了,因爲他/她可以進行某種形式的盡職調查。有時候不是關於徒步旅行或山坡,而是關於指南針。 – z82n 2014-09-25 07:00:46

+2

堆棧溢出不是爲指南針而設計的。我建議你問別的地方,如果這是你想要的。但是現在你有一個半角色的問題(「如何在這些文件之間傳遞用戶的名字。」),儘管你可能不會因爲你寫的問題得到很多關注。將這篇文章分解爲*僅*即時問題,並說出您嘗試過的內容,並且您將從社區獲得更好的迴應。 – Veedrac 2014-09-25 07:08:18

回答

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>