forms.py
的一部分class FormPublicar(forms.ModelForm):
class Meta:
model = Publicacao
exclude = ('usuario', 'aprovado', 'cadastrado_em', 'slug')
def enviar(self):
titulo = 'mensagem enviada pelo site'
destino = self.cleaned_data['emailp']
mensagem = u"""
Message that will be sent after completing the form.
Here I must pass a link to the full URL into the body of the email, something like:
[ 1 ]http://www.domain.com/item/playstation3/
/view/slug/
""" % self.cleaned_data
send_mail(
subject = titulo,
message = mensagem,
from_email = 'inform@domain.com',
recipient_list =[destino],
)
[1]我读到了“反向”,试图挂载url + view +参数。 但我无法正确生成链接,做了很多方法但不能。
我需要传递完成表单后生成的域名+ view +参数slug。
对于电子邮件收件人,请参阅正确的链接。
任何人都可以帮助我吗? 提前谢谢。
答案 0 :(得分:0)
使用reverse()
通常是生成没有域的URL部分的正确方法。例如,如果您的URL配置包含以下内容:
(r'^item/(?P<item>[-%\w]+)/view/(?P<slug>[-\w]+)$', 'my_view_function')
接下来的电话
reverse('my_view_function', kwargs={'item': 'playstation3', 'slug': 'my-slug'})
应该返回/item/playstation3/view/my-slug
。
最好,您的模型Publicacao
应定义一个get_absolute_url
方法,该方法返回模型实例的实际URL。请参阅http://docs.djangoproject.com/en/1.2/ref/models/instances/#get-absolute-url。
可以使用Sites框架检索域名部分:
>>> from django.contrib.sites.models import Site
>>> s = Site.objects.get_current()
>>> s.domain
u'localhost:8000'
当然,您必须正确配置网站的域名。另请参阅http://docs.djangoproject.com/en/1.2/ref/contrib/sites/#getting-the-current-domain-for-full-urls。
答案 1 :(得分:0)