访问视图中的Django目录

时间:2016-08-19 18:18:00

标签: python django

当用户在前端网站中输入数字时,我会自动生成Word文档。我的首要目标是让Django开始下载文档,但这并不成功。

现在,我只想将文件保存到服务器并将文件位置URL传递回我的JS,这样我就可以创建一个链接供用户点击。

前端使用AJAX调用将用户输入传递回视图。麻烦的是在Django视图中获取正确的路径。这是我的观点:

@login_required
@custom_header
def create_document(request, *args, **kwargs):
    """Create a doc and return URI."""

我尝试使用this SO方法:

    doc_path = static('doc.docx')

^返回此错误: IOError:[Errno 2]没有这样的文件或目录:'/ static / doc.docx'

我在两个位置手动创建了文件夹和doc.docx文件,因此它们确实存在。根据建议on SO here,我将其更改为:

    doc_path = os.path.join(os.path.dirname(__file__), 'doc/doc.docx')

^但结果是: IOError:[Errno 13]权限被拒绝:'。/ app_folder / doc / doc.docx'

其余观点:

    doc_name = doc.docx

    # Template on which the doc is based
    template_path = os.path.join(os.path.dirname(__file__), 'doc/template.docx')

    form = CleanerForm(request.POST)
    if form.is_valid():
        user_input = form.cleaned_data.get('user_input')
        doc_context = requests.get(
            'https://MY_API_URI/user_input=%s' % user_input,
        )
    else:
        # Failure Actions

    # Generate doc with context
    print os.getcwd()
    template = DocxTemplate(tmpl_path)
    template.render(json.loads(doc_context.text))
    template.save(doc_path)

    return HttpResponse(doc_path)

进口

from docxtpl import DocxTemplate
import json
import os
from .forms import CleanerForm
from django.http import HttpResponse
from django.templatetags.static import static

我打开文件的初始代码(不起作用)是:

with open(doc_path) as this_doc:
    wrapper = File(this_doc)
    content_type = mimetypes.guess_type(doc_path)[0]
    response = HttpResponse(wrapper, content_type=content_type)
    response['Content-Length'] = os.path.getsize(doc_path)
    response['Content-Disposition'] = "attachment; filename=%s" % doc_name

0 个答案:

没有答案