Django来自文件中的大量单词

时间:2017-08-15 08:35:48

标签: django

我有一个包含60,000个单词的文件,我需要该网址只有在包含该文件中的任何单词时才有效

url(r'^site/KEYWORD/$', 'mysite.views.home')

所以基本上我需要KEYWORD成为该文件中的一个单词。

我知道我们可以将管道用于多个单词,但列表太大而无法执行此操作

2 个答案:

答案 0 :(得分:0)

请勿在网址中执行此操作;在视图中进行。

def my_view(request, word):
    if word not in WORDS:
        raise Http404()

为获得最佳性能,WORDS应该是在模块级别定义的集合。

答案 1 :(得分:0)

首先,将keyword设为URL参数:

url(r'^site/(?P<keyword>\w+)/$', 'mysite.views.home')

然后在你看来你可以这样做:

def home(request, keyword=None):
    if keyword in open('./words.txt').read():
        ...

    raise Http404()

但是不是这样做的好方法,因为在每个请求中你都会打开并阅读整个文件。解决方案是将这些单词存储在一个恒定的模块级变量中并读取该文件一次。

有些事情是这样的:

WORDS = open('./words.txt').read()

然后在你看来:

if keyword in WORDS:
    ...