标签: django-errors

手动触发Django电子邮件错误报告

Django错误报告通过发送电子邮件处理未捕获的异常,并(可选)向用户显示一个不错的500错误页面.

这非常有效,但在少数情况下,我想让用户不间断地继续他们的业务,但仍然让Django向我发送有关异常的电子邮件错误报告.

所以基本上:即使我发现异常,我还可以手动发送电子邮件错误报告吗?

当然,我想避免手动生成错误报告电子邮件.

python django exception-handling django-email django-errors

32
推荐指数
4
解决办法
4701
查看次数

如何用Gunicorn查看Django错误的详细信息?

我刚刚用gunicorn和Nginx部署了我的Django(1.6)项目.

它似乎工作正常,但我有一个页面,我收到HTTP 500错误,我无法找到任何有关错误的详细信息.

如何让gunicorn向我显示错误?

当我点击页面给出错误时,这是​​我目前在日志文件中看到的所有内容:

>tail gunicorn.errors 
2014-02-21 14:41:02 [22676] [INFO] Listening at: unix:/opt/djangoprojects/reports/bin/gunicorn.sock (22676)
2014-02-21 14:41:02 [22676] [INFO] Using worker: sync
2014-02-21 14:41:02 [22689] [INFO] Booting worker with pid: 22689
...
2014-02-21 19:41:10 [22691] [DEBUG] GET /reports/2/
Run Code Online (Sandbox Code Playgroud)

这是我用来启动gunicorn的bash脚本:

>cat gunicorn_start
#!/bin/bash

NAME="reports"                                  # Name of the application
DJANGODIR=/opt/djangoprojects/reports          # Django project directory
SOCKFILE=/opt/djangoprojects/reports/bin/gunicorn.sock  # we will communicte using this unix socket
USER=reportsuser                                        # the user to run as
GROUP=webapps                                     # the group to run as
NUM_WORKERS=4                                     # how many …
Run Code Online (Sandbox Code Playgroud)

django bash nginx django-errors gunicorn

25
推荐指数
5
解决办法
2万
查看次数

Django:字段错误未知字段

我刚刚安装了OS X Lion,所以我不得不重新安装Python2.7的所有内容.在这样做时,我将我的Django从1.2.3升级到1.3.当我尝试运行服务器时,我得到一个奇怪的字段错误,我很难解密.

FieldError at /
Unknown field(s) (a, m, s, e, g) specified for Note
Run Code Online (Sandbox Code Playgroud)

这是模型和形式:

class Note(models.Model):
    pub_date = models.DateTimeField(default=datetime.now, 
        auto_now_add=True, db_index=True)
    user = models.ForeignKey(User, null=True, blank=True, related_name="writers")
    to = models.ForeignKey(User, null=True, blank=True, related_name="tost")
    message = models.CharField(default='', max_length=140)
    active = models.BooleanField(default=True)

class NoteForm(forms.ModelForm):
    class Meta:
        model = Note
        fields = ('message')

    message = forms.CharField(
        label=_("Sign the Guestbook"),
        widget=forms.Textarea,
        required=True)
Run Code Online (Sandbox Code Playgroud)

django django-errors

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

str_detect R的多个字符串

我想找到多个字符串并将其放在变量中,但是我不断收到错误.

queries <- httpdf %>% filter(str_detect(payload, "create" || "drop" || "select"))
Error: invalid 'x' type in 'x || y'

queries <- httpdf %>% filter(str_detect(payload, "create" | "drop" | "select"))
Error: operations are possible only for numeric, logical or complex types

queries1 <- httpdf %>% filter(str_detect(payload, "create", "drop", "select"))
Error: unused arguments ("drop", "select")
Run Code Online (Sandbox Code Playgroud)

这些都没有奏效.还有其他方法可以做到str_detect或者我应该尝试别的吗?我希望它们也出现在同一列中.

string r django-errors

14
推荐指数
2
解决办法
2万
查看次数

django中的默认500回溯是什么,以便我可以用它来创建我自己的日志?

我想用它在我的自定义中间件类的process_exception()方法中生成html日志文件,例如:

  • 抓住了例外.
  • process_exception(request)调用.
  • process_exception调用任何函数返回默认错误html.
  • process_exception将返回的html写入django服务器正在运行的某个地方的logs文件夹.

我知道Django能够为这些异常发送电子邮件,但我宁愿不使用它.我正在使用JSON开发一个RESTful应用程序,所以返回一个json字符串表示错误500然后将html放在其他地方感觉更合适.

提前致谢.

对不起,也许我需要澄清一下:我不想创建自己的500.html,我想使用当Debug = True时django使用的那个.即生成错误文件并将其放在日志文件夹中.

感谢Mark的帮助 - 这是我对任何感兴趣的人的解决方案:

import logging
import os
import settings
import sys
import datetime

from response import get_json_response
from django.views.debug import ExceptionReporter

logging.config.dictConfig(settings.LOGGING)
LOGGER = logging.getLogger('console_logger')

class LoggingMiddleware(object):

    def process_exception(self,request,exception):
        exc_type, exc_value, exc_traceback = sys.exc_info()
        er = ExceptionReporter(request, exc_type, exc_value, exc_traceback)
        time = str(datetime.datetime.now())
        file_path = os.path.join(settings.LOG_FOLDER, "{}.html".format(time))
        LOGGER.error("Writing error 500 traceback to %s" % file_path)
        file_handle = open(file_path,'w')
        file_handle.write(er.get_traceback_html())
        file_handle.close()
        return get_json_response(500,"HTTP Error 500: Internal Server Error")
Run Code Online (Sandbox Code Playgroud)

代码拦截任何异常,使用sys模块和djangos默认错误模板生成格式良好的回溯/异常信息页面,然后在返回JSON对象之前将其放在日志文件夹中,表明存在http错误500.

django django-templates django-middleware django-views django-errors

11
推荐指数
2
解决办法
1795
查看次数

严格制作django模板

在django模板中,{{ var }}如果var未定义,则调用将静默失败.这使模板难以调试.有没有我可以切换的设置,所以django会在这种情况下抛出异常?

我在网上找到的解决方案的唯一提示是http://groups.google.com/group/google-appengine/browse_thread/thread/86a5b12ff868038d,听起来非常黑客.

django django-templates django-errors

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

Django错误报告 - 如何知道哪个用户触发了错误?

有没有办法我可以自定义Django错误报告,所以当它通过电子邮件发送给我时,它让我知道哪个用户触发了错误?

如果重要的话,我在Django 1.2.

非常感谢提前!

python django django-middleware django-email django-errors

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

期望从视图返回 `Response`、`HttpResponse` 或 `HttpStreamingResponse`,但收到了 `&lt;class 'NoneType'&gt;`

模型.py

class Wishlist(models.Model):
    home = models.ForeignKey(Home, on_delete=models.CASCADE, blank=False, null=False)
    user = models.ForeignKey(User, on_delete=models.CASCADE, blank=False, null=False)

    def __str__(self):
        return "{} - {}".format(self.user.username, self.home.address)

    class Meta:
        ordering = ('user',)
Run Code Online (Sandbox Code Playgroud)

网址.py

urlpatterns = [
    path(r'wishlist/<int:pk>/', views.WishlistGetUserItems.as_view(), name='wish-user-list'),
]
Run Code Online (Sandbox Code Playgroud)

视图.py

class WishlistGetUserItems(APIView):

    def get(self, request, pk):
        wishlist = get_list_or_404(Wishlist, user=pk)
        data = serializers.UserWishlistSerializer(wishlist).data
        Response(data, status=status.HTTP_200_OK)
Run Code Online (Sandbox Code Playgroud)

我也试过打印消息,但似乎没有调用该方法

python django django-views django-errors django-rest-framework

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

如何在 Django 中正确使用 assertRaises

我的模型中有以下验证功能:

@classmethod
def validate_kind(cls, kind):
    if kind == 'test':
        raise ValidationError("Invalid question kind")
Run Code Online (Sandbox Code Playgroud)

我正在尝试如下测试:

w = Model.objects.get(id=1) 

self.assertRaises(ValidationError, w.validate_kind('test'),msg='Invalid question kind')
Run Code Online (Sandbox Code Playgroud)

我也试过:

self.assertRaisesRegex(w.validate_kind('test'),'Invalid question kind')
Run Code Online (Sandbox Code Playgroud)

这两个都不能正常工作。我究竟做错了什么?

django django-testing django-errors python-unittest django-tests

7
推荐指数
2
解决办法
6033
查看次数

使用 self.add_error() 和引发 ValidationError() 有什么区别?

您可以通过两种方式引发验证错误。第一个是与self.add_error(),第二个是与raise ValidationError()

我读过,当您使用self.add_error('field1','description here')then时,它field1也会自动从cleaned_data列表中删除,并且我假设 ValidationError 对象也被添加到列表中self.errors,这是正确的吗?

但是,当您不选择使用self.add_error而是选择使用时会发生什么呢raise ValidationError ?这个对象是否也在errors幕后自动添加到列表中?您将如何将此错误消息显示为正确的无效字段下的标题?

谢谢

django django-errors

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