2012-09-18 2 views
3

거짓에서 값 변경이 내 모델 링크와 함께 사용자에게 메일을 보내 사용자가 클릭 할 때 뷰를 만드는 방법장고가 이메일을 확인합니다. 이것은 내 양식이다</p> <pre><code>from django.db import models class Meeting(models.Model): name = models.CharField(max_length=255) time = models.DateTimeField() confirmed = models.BooleanField(default=False) </code></pre> <p>: 사실

from django import forms 

class MeetingForm(forms.Form): 
    name = forms.CharField(max_length=100) 
    time = forms.DateTimeField() 
    user_name = forms.CharField(max_length=100) 
    user_email = forms.EmailField() 

이 링크 confrimed 필드는 가치를 사실로 바꿀 것입니까?

링크가 가장 큰 문제입니다.

+1

당신이 본 적이 urls.py [사이트 내장 된 프레임 워크처럼 뭔가를 할 수 ] (https://docs.djangoproject.com/en/dev/ref/contrib/s ites/# django.contrib.sites.models.get_current_site)? 현재 도메인을 잡을 수는 있지만 적절한 조명기와 같이 데이터베이스에 설정해야합니다. –

답변

3

모델

import random 
import string 

class Meeting(models.Model): 
    name = models.CharField(max_length=255) 
    time = models.DateTimeField() 
    confirmed = models.BooleanField(default=False) 
    key = models.CharField(max_length=32) 

    def save(self, *args, **kwargs): 
     ''' 
     On save generate key which will be sent in email 
     ''' 
     self.key = ''.join(random.choice(string.letters) for i in xrange(32)) 
     super(Meeting, self).save(*args, **kwargs) 
     return self 

views.py

def confirm(request, key): 
    try: 
     meeting = Meeting.objects.get(key=key) 
    except Meeting.DoesNotExist: 
     # wrong key, do something, redirect to somewhere etc 
     template = 'error.html' 
    else: 
     meeting.confirmed = True 
     meeting.save() 
     template = 'success.html' 
    render(request, template) 

def send_email(request): 
    email = request.user.email 
    meeting = Meeting.objects.get(...your condition here...) 
    send_mail('Confirmation email', 
       # this is a link you wanted to 
       '<a href="%s">confirm</a>' % reverse('user_confirm', 
                kwargs={'key': meeting.key}), 
       '[email protected]', [email]) 
    render(request, 'mailsent.html') 

urlpatterns = patterns('', 
    url(r'^confirm/(?P<key>[\w]{32})/$', 'yourapp.views.confirm', 
     name='user_confirm'), 
    ) 
+1

감사합니다. 매우 도움이됩니다. –