1

编辑以回应评论和答案:

我是 django 和 web 开发的新手,我觉得我缺少一些关于如何使用 django 视图的基本知识。

我有一个 django 应用程序,我按照 django 教程中的说明设置:here。具体来说,我最终得到了那里描述的自动生成的目录和文件结构:

mysite/
  manage.py
  settings.py
  urls.py
  myapp/
    models.py
    views.py
    templates/
      *.html
    static/
      *.css

在我的应用程序中,我从模板表单中接收到一些用户输入,并将其保存在我的模型中 views.py 的函数中。

在执行此操作之前,我想运行一些函数来检查输入 - 取决于它是什么,我决定是否将其放入数据库以及将其放入数据库的位置,以及接下来要向用户显示的内容。

例如,我想做的一件事是检查输入的单词是否在字典中。我在文本文件中有一个单词列表,我想检查输入中的单词是否在该列表中。

我希望能够做类似的事情:

wordlist = set(w.strip() for w in open(filename).readlines())

我应该把这个文本文件放在哪里,我如何在views.py中引用它(以便打开它)?我应该把那行代码放在哪里 - 有没有办法只做set一次,然后在任何用户提交输入时访问它?

请注意,我尝试将文本文件放入myapp/然后执行open(filename),但出现错误:

IOError No such file or directory.

我也尝试将文件放入static/然后执行,open(STATIC_URL + filename)但出现错误:

NameError Name 'STATIC_URL' is not defined.

但是我确实有from django.contrib import staticfiles,所以应该定义它。

4

2 回答 2

1

这是一篇非常古老的文章,但我正在做类似的事情,这是我如何在 Django view.py 中读取文本内容的解决方案

import os

def your_view_function(request):
    module_dir = os.path.dirname(__file__)   #get current directory
    file_path = os.path.join(module_dir, 'data.txt')   #full path to text.
    data_file = open(file_path , 'rb')   #I used'rb' here since I got an 'gbk' decode error
    data = data_file.read()
    # print("data=", data)
    return whatever_you_need
于 2020-04-11T08:22:01.727 回答
0

Django 只是 Python。在 Django 中访问文件没有特殊规则,您可以像使用任何其他 Python 脚本一样执行此操作。

你没有给出任何例子或为什么open(filename)不起作用的原因。假设filename是一个绝对路径,并且运行 Django 的用户有权打开文件,它肯定可以工作。(虽然请注意,当涉及到多用户网站时,依靠打开文件可能不是最好的设计。)

于 2013-11-04T09:21:08.817 回答