2009-05-21 7 views
20

मैं एक ई-मेल बनाने के लिए django टेम्पलेट का उपयोग कर रहा हूं। मैं कुछ इस तरह करते हैं: {% यूआरएल url_name पैरामीटर%}मैं पूर्ण यूआरएल के लिए Django में सर्वर का नाम कैसे प्राप्त करूं?

कौन सा ठीक काम करता है, को छोड़कर यह की तरह, एक रिश्तेदार यूआरएल प्रस्तुत करना होगा:

msg_html = render_to_string('email/%s.html' % template_name, context) 
msg = EmailMultiAlternatives(subject, msg_text, from_email, to_list) 
msg.attach_alternative(msg_html, "text/html") 
msg.content_subtype = "html" 
msg.send() 

मेरे टेम्पलेट तो जैसे url प्रतिमानों नामित उपयोग करता है /app_name/url_node/पैरामीटर

आमतौर पर वह पर्याप्त है, लेकिन मैं वास्तव में यह एक पूर्ण यूआरएल की जरूरत है के बाद से इस एक ई-मेल है - prepended, जैसे सर्वर नाम के साथ: http://localhost:8000/app_name/url_node/parameter

मैं यह कैसे कर सकता हूं? मैं गतिशील रूप से सर्वर का नाम कैसे प्राप्त करूं? (मैं इसे निश्चित रूप से हार्डकोड नहीं करना चाहता)।

पूछने का एक और तरीका: मैं HttpServletRequest.getContextPath() ala Java कैसे प्राप्त करूं, लेकिन इसके बजाय Django/Python में?

धन्यवाद

उत्तर

16

उपयोग साइटों आवेदन:

Site.objects.get_current().domain 

उदाहरण प्रलेखन से प्रत्यक्ष:

from django.contrib.sites.models import Site 
from django.core.mail import send_mail 

def register_for_newsletter(request): 
    # Check form values, etc., and subscribe the user. 
    # ... 

    current_site = Site.objects.get_current() 
    send_mail('Thanks for subscribing to %s alerts' % current_site.name, 
     'Thanks for your subscription. We appreciate it.\n\n-The %s team.' % current_site.name, 
     '[email protected]%s' % current_site.domain, 
     [user.email]) 

    # ... 
+6

कैसे के बारे में ब्लॉग का उपयोग किए बिना? क्या इसे करने का कोई तरीका है? मॉडल पर भरोसा करना बहुत मूर्खतापूर्ण है। – JamesD

+2

आप इसे हमेशा अपनी सेटिंग्स फ़ाइल में सेट कर सकते हैं और इसे अपनी स्थानीय_सेटिंग फ़ाइल – super9

+4

से अधिक सवारी कर सकते हैं http://stackoverflow.com/questions/2345708/how-can-i-get-the-full-absolute-url-with -domain-इन-Django – glarrain

संबंधित मुद्दे