Question

django-contact-form is a popular third-party application. It aims to remove tedium and repetition by providing simple, extensible contact-form functionality for Django-powered sites. However I found the documentation is somehow difficult to follow(Perhaps I'm not clever enough:).

After some searching and testing, finally I got it to work. I'll write down the steps and code to help those who might be using it in the future.

Was it helpful?

Solution

1. Install

pip install django-contact-form

2. Add necessary configuration to settings.py

EMAIL_USE_TLS = True  
EMAIL_HOST = 'smtp.gmail.com'  
EMAIL_PORT = 587  
EMAIL_HOST_USER = 'laike9m@gmail.com'  # this is my email address, use yours
EMAIL_HOST_PASSWORD = os.environ['EMAIL_HOST_PASSWORD']   # set environ yourself

ADMINS = (
    ('your_name', 'your_email'),   # email will be sent to your_email
)

MANAGERS = ADMINS

Also, add 'contact_form' to your INSTALLED_APPS.

3. Create contact_form templates

Create a folder called contact_form in your templates folder and add these files into it:

templates  
    └─contact_form  
          contact_form.html  
          contact_form.txt  
          contact_form_sent.html  
          contact_form_subject.txt  

You can write your own, Here's what I use:

contact_form.html

{% extends 'laike9m_blog/blog_base.html' %}

{% block content %}
  <h2>Contact Form</h2>
  <p>To send us a message fill out the below form.</p>
  <form method="post">{% csrf_token %}
    <p>Name: <input type="text" name="name"></p>
    <p>Your e-mail: <input type="text" name="email"></p>
    <p>Message: <textarea name="body" rows="10" cols="50"></textarea></p>
    <input type="submit" value="Submit">
  </form>
{% endblock content %}

contact_form.txt

{{ name }}
{{ email }}
{{ body }} 

contact_form_sent.html

{% extends 'laike9m_blog/blog_base.html' %}

{% block content %}
  <h2>Your message was sent.</h2>
{% endblock content %}

contact_form_subject.txt

message from {{ name }}

4. URLconf

Add this line into your URLconf:

(r'^contact/', include('contact_form.urls')),

All Done

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top