小编Tho*_*mas的帖子

Django - Haystack 在两个不同的应用程序中

我在一个应用程序中使用 Haystack,它非常完美。它正在索引我需要的一切。但是,现在我创建了另一个应用程序,具有不同的模型和内容,我想 Haystack 对其进行索引。这个想法是在我的网站上创建两个不同的“搜索”链接,每个应用程序一个。

但是,当我将第二个配置添加到 haystack 索引时,我遇到了一些问题......

我创建了一个新的 search_index.py (在我的新应用程序中),其中包含以下内容:

import datetime
from haystack.indexes import *
from haystack import site
from oportunity.models import Oportunity


class OportunityIndex(SearchIndex):
    title = CharField(document=True, use_template=True)
    body = CharField()
    date= DateTimeField()

    def index_queryset(self):
        return Oportunity.objects.filter(date=datetime.datetime.now())


site.register(Oportunity, OportunityIndex)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行 python manage.py rebuild_index 时,出现以下错误:

第 94 行,在 all_searchfields 中引发 SearchFieldError("所有具有 'document=True' 的 SearchIndex 字段必须使用相同的字段名。") haystack.exceptions.SearchFieldError:所有具有 'document=True' 的 SearchIndex 字段必须使用相同的字段名。

django-haystack

4
推荐指数
1
解决办法
1152
查看次数

Django:来自视图的初始值

如何从视图中获取初始值?我应该在表格中使用什么参数?

views.py

def cadastro_usuario(request):
    if request.method == 'POST':
        form = cadastroForm(request.POST)
        if form.is_valid():            
            new_user = form.save()
            return HttpResponseRedirect("/")
    else:
        form = cadastroForm()
    return render_to_response("registration/registration.html", {
        'form': form, 'tipo_cadastro': 'PF',})
Run Code Online (Sandbox Code Playgroud)

forms.py

class cadastroForm(UserCreationForm):

    tipo_cadastro = forms.CharField(XXXXX)
Run Code Online (Sandbox Code Playgroud)

django django-forms django-views

3
推荐指数
1
解决办法
5180
查看次数

Django TEMPLATE_CONTEXT_PROCESSORS 被调用太多次

我需要在所有页面中显示一些统计数字,所以我决定使用上下文处理器。但我刚刚发现我的函数在每次加载页面时都会被调用 2 到 7 次。我在函数内部进行了 4 次查询,因此性能非常差。每个页面加载最多可能需要 28 (4*7) 个查询...

我想知道为什么会发生这种情况以及我可以做些什么来避免它。

设置.py

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.request',
    'django.contrib.messages.context_processors.messages',
    'django.core.context_processors.static',
    'core.views.numbers',
)
Run Code Online (Sandbox Code Playgroud)

视图.py

def numeros(request):
      ...
    a=table1.objects.count()
    b=table2.objects.count()
    c=table3.objects.count()
    d=table4.objects.count()
     ...
    return {'a': a,
            'b': b,
            'c': c,
            'd': d,
            'e': e,
            'f': f,
            'g': g,
            'h': h
    }
Run Code Online (Sandbox Code Playgroud)

[更新 - 谢谢] @okm 和 @catherine 提供了非常好的补充解释。两者都是正确的,正如@okm 所说,上下文处理器被多次调用,因为我多次使用 RequestContext。

@catherine 也是正确的。我们需要特别注意我们在上下文处理器中放置的内容。我更改了代码,只是在登录页面中显示统计数字。

django django-templates django-context

3
推荐指数
1
解决办法
1061
查看次数

从 crontab 运行 python 脚本时的编码问题

我正在将我的 python 脚本从一台服务器迁移到一个新的 docker 容器。但是我在编码方面遇到了一个奇怪的问题,我尝试了几种解决方案但没有成功。

如果我直接从终端(手动)运行脚本,它会成功执行。但是如果我通过 crontab 运行,我会收到以下错误:

UnicodeEncodeError: 'ascii' 编解码器无法编码字符

我创建了一个小脚本来检查编码:

import sys
print sys.stdout.encoding
Run Code Online (Sandbox Code Playgroud)

如果我手动运行,我会得到以下响应:

UTF-8

然后,我在 cron 中添加了这个脚本并将输出定向到一个文件:

 * * * * *   /tmp/p.py > /tmp/p.log
Run Code Online (Sandbox Code Playgroud)

它保存了一个空的 p.log ......所以我认为 python 没有从 crontab 获取编码。

我看到一些建议在调用命令之前在 crontab 中添加编码变量,但它对我不起作用。举个例子:

* * * * *  PYTHONIOENCODING=UTF-8 /tmp/p.py > /tmp/p.log
Run Code Online (Sandbox Code Playgroud)

或者

* * * * *  LANG=UTF-8 /tmp/p.py > /tmp/p.log
Run Code Online (Sandbox Code Playgroud)

另外,我试图在我的 crontab 文件的头部添加这个变量。根本没有成功。

我正在使用安装了几个语言环境的 Ubuntu:

    locale -a 
    C 
    C.UTF-8 
    en_US.utf8 
    POSIX
Run Code Online (Sandbox Code Playgroud)

这是我的语言环境(在 cron 之外):

LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8" …
Run Code Online (Sandbox Code Playgroud)

cron encoding python-2.7

2
推荐指数
1
解决办法
2296
查看次数

发送电子邮件时谷歌应用程序的Django错误

我有一个连接谷歌应用程序发送电子邮件的Django应用程序.但是,几天前我开始收到"由同行重置连接"错误.有时候它有效,有时候不行......我找不到任何理由来证明什么时候不行......我正在使用nginx和uwsgi.任何人都可以帮助我了解最新情况以及解决方法吗?

这个应用程序运行超过1个月,刚刚开始出现此错误.

这是日志:

    Traceback (most recent call last):

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/handlers/base.py", line 111, in get_response
   response = callback(request, *callback_args, **callback_kwargs)

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/utils/decorators.py", line 93, in _wrapped_view
   response = view_func(request, *args, **kwargs)

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/contrib/auth/views.py", line 155, in password_reset
   form.save(**opts)

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/contrib/auth/forms.py", line 147, in save
   t.render(Context(c)), from_email, [user.email])

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/mail/__init__.py", line 61, in send_mail
   connection=connection).send()

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/mail/message.py", line 251, in send
   return self.get_connection(fail_silently).send_messages([self])

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/mail/backends/smtp.py", line 90, in send_messages
   self.close()

 File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/mail/backends/smtp.py", line 58, in close
   self.connection.quit()

 File "/usr/lib/python2.6/smtplib.py", line 730, in …
Run Code Online (Sandbox Code Playgroud)

django nginx uwsgi

1
推荐指数
1
解决办法
1024
查看次数