python - 在 django 管理面板中尝试除外
问题描述
我的 models.py 中有一个函数,它使用 OpenGraph 通过 URL 添加我传递给它的新闻。这个过程工作正常,但是有一些网站给我一个错误,我怎么能用try来控制这个错误并且应用程序不会崩溃?
发生错误时,我希望管理面板中的应用程序将我返回到以前的相同位置,但指示错误。
最好的问候,非常感谢你!
我的模型.py:
class Post(models.Model):
title = models.CharField(max_length=200, verbose_name="Título", null=True, blank=True)
content = RichTextField(verbose_name="Contenido", null=True, blank=True)
published = models.DateTimeField(verbose_name="Fecha de publicación", default=now, null=True, blank=True)
image = models.ImageField(verbose_name="Imagen", upload_to="blog", null=True, blank=True)
author = models.ForeignKey(UserManegement, verbose_name="Autor", on_delete=models.CASCADE)
categories = models.ManyToManyField(Category, verbose_name="Categorias", related_name="get_posts")
url_web = models.URLField(verbose_name="URL", null=True, blank=True)
created = models.DateTimeField(auto_now_add=True, verbose_name='Fecha de creacion')
updated = models.DateTimeField(auto_now=True, verbose_name='Fecha de ediccion')
class Meta:
verbose_name = "entrada"
verbose_name_plural = "entradas"
ordering = ['-created']
def __str__(self):
return self.title
我要在其中插入 try except 的函数。它在同一个models.py中:
@receiver(pre_save, sender=Post)
def url_processor(sender, instance, *args, **kwargs):
if instance.url_web:
title, description, image = web_preview(instance.url_web)
instance.title = title
instance.content = description
path = 'blog/' + uuid.uuid4().hex + '.png'
instance.image = path
img_data = requests.get(image).content
with open('media/' + path, 'wb') as handler:
handler.write(img_data)
else:
return
这是输入此 url 时的错误:Web error
requests.exceptions.MissingSchema: Invalid URL 'None': No schema supplied. Perhaps you meant http://None?
我所看到的错误是由于 URL 的 21,版本 3.6.10 中的 Python 请求库将其视为错误。它只发生在其域中有一些数字的 URL 上。
解决方案
而不是signals
在模型clean
方法中使用此代码。
从 django.core.exceptions 导入 ValidationError
Class YourModel(models.Model):
# fields
def clean(self, *args, **kwargs):
try:
# your signal code here
except:
raise ValidationError('Your message')
推荐阅读
- excel - 允许 Power Query 同时包含文本和数字
- mysql - 更新或创建条件数据作为输入
- excel-formula - 用于提取字符串末尾带有多个右括号的文本的 Excel 公式
- powershell - 使用 Powershell 创建应用服务或插槽
- java - backStack 中的片段
- amazon-web-services - Postfix 发送短信 - Debian
- javascript - 如何将 .then() 函数的响应放入 module.exports 中?
- r - 如何在ggplot中指示y轴不是从0开始?
- ios - 动态表视图单元格和 IBOutlets - 以编程方式从 Stepper Inside Cell 保存数据
- sql - 如何将具有相同 ID 的行合并到一个列表中