我有一个使用Django的网站.每个帖子都是一个名为Article的对象.我想在保存后检索帖子的HTML,所以我编写了以下post_save钩子:
@receiver(models.signals.post_save, sender=Article)
def _send_article_mentions(sender, instance, **kwargs):
import requests
from django.contrib.sites.models import Site
from urlparse import urljoin
from ParallelTransport.settings import ARTICLES_URL
SITE_URL = 'http://'+Site.objects.get_current().domain
article_url = urljoin( SITE_URL, instance.get_absolute_url() )
import time
time.sleep(20)
r = requests.get(article_url)
error_file = open(ARTICLES_URL+'/'+'error.txt','w')
error_file.write('file started1\n')
m = r.status_code
error_file.write(str(m))
error_file.close()
Run Code Online (Sandbox Code Playgroud)
它基本上等待20秒(作为测试添加)然后尝试使用其URL检索帖子的HTML,并将请求状态代码写入文件以进行调试.
问题是我在第一次保存时总是获得status = 404,它在第二次和后续保存时都有效.我认为Django的工作方式是:
但后来我应该能够在post_save中检索HTML.我对post_save的理解不正确吗?
补充说明: