我需要返回ModelForm完成后生成的链接

时间:2010-10-29 14:06:59

标签: python django

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。

对于电子邮件收件人,请参阅正确的链接。

任何人都可以帮助我吗? 提前谢谢。

2 个答案:

答案 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)

Bernd,谢谢。 关于我已经知道的“反向”。

一个简短的例子。 这只是一个相同的问题。 http://pastebin.ca/1977489

谢谢,我道歉,我还在研究Django。