Django:send_mail HttpResponseRedirect

时间:2015-01-14 06:40:07

标签: django return sendmail

我遇到了返回HttpResponseRedirect

的问题

错误是找不到页面

请求网址:http://127.0.0.1:8000/home/

model.py

def on_post_save(sender, instance, signal, created, **kwargs):
if created:
    print 'created'
    send_mail(u"demande_Expertise", 'Bonjour je souhaite obtenir les droits d acces de ce materiau', 'patrice.kerviel@gmail.com',
        [instance.categorie.expert.utilisateur.email])
    return HttpResponseRedirect("http://127.0.0.1:8000")

else:
    if instance.etat=='0':
        send_mail(u"demande acceptée", u'Bonjour, votre demande est acceptée', u'patrice.kerviel@gmail.com',
                  [instance.user.email])
    elif  instance.etat=='1':
          send_mail(u"demande refusée", u'Bonjour, votre demande est refusée', u'patrice.kerviel@gmail.com',
                    [instance.user.email])
return HttpResponseRedirect('/')

urls.py

urlpatterns = patterns('',
                     #url(r'^$', main_page),
                     url(r'^$', mainView.as_view(), name='homepage'), 

这是什么问题?

2 个答案:

答案 0 :(得分:0)

你不能从on_post_save信号中返回任何内容。在保存模型期间,这些HttpResponseRedirect响应会被抛弃。

显示保存模型实例的视图的代码。

编辑:好的,我看到你了。将您的观看次数success_url/home/更改为/

class Demande_Expertise(CreateView):
    form_class = Demande_ExpertiseForm
    template_name = 'material/demande_expertise3.html'
    success_url = '/'

并且不要忘记从return HttpResponseRedirect()功能中删除on_post_save行。

答案 1 :(得分:0)

我认为有几个问题。

  1. HttpResponseRedirect与任何urlpatterns都不匹配
  2. 更重要的是,您不会从模型中返回回复
  3. 您可以在views.py中执行类似的操作:

    def some_view(request):
      element = SomeModel(value=some_value, etc) #this has custom save actions
      if element.field == 'something:
      return redirect('homepage')
    

    我不确定这是否可以回答您的问题,但您可以在模型中自定义保存操作。但是,视图是您应该确定要提供哪些模板或页面的地方。