Γενικώς και αορίστως:
Η κλήση φόρμας με τη χρήση του forms.py γίνεται στο views.py.
- Κάνεις import το ModelForm και τις κλάσεις που έχεις δημιουργήσει στο forms.
- Δημιουργείς είτε μια function, είτε μια generic.ListView class (αν θυμάμαι καλά δεν γίνεται με DetailView, δεν είμαι απόλυτος γι αυτό)
- Καλείς την φόρμα είτε με form = το όνομα της κλάσης που έχεις δημιουργήσει στο forms.py(request.POST/GET), είτε με return render(request, 'όνομα.html').
- Δημιουργείς το αντίστοιχο url pattern στο urls.py
Όλα αυτά στο Django 1.9 που προσωπικά το βρήκα αρκετά πιο εύχρηστο από άλλες version.
Σε παλαιότερες version συνάντησα αρκετά προβλήματα και τελικά το έκανα με τον απλό τρόπο.
Ισως να έτυχε σε μένα ή ίσως να επηρεάστηκα γιατί πρώτα έμαθα την έκδοση 1.9 και μετά αναγκάστηκα να μάθω παλαιότερες version, οπότε μπορεί να είμαι προκατειλημμένος. Αν έχεις χρόνο δοκίμασε. Καλό θα σου κάνει.
Όπως σου εξήγησα στο προηγούμενο μήνυμα με αυτό τον τρόπο το Django ελέγχει καλύτερα την "δομή" του.
Για παράδειγμα, με 3 γραμμές κώδικα ελέγχει αν ο χρήστης έχει γράψει κάτι στο πεδίο της φόρμας, αν έχει πατήσει το submit και σώζει τα δεδομένα. Για να τα κάνεις όλα αυτά με custom κώδικα, είναι πιο δύσκολο και θα χρειαστείς τριπλάσιο κώδικα, με αμφίβολα αποτελέσματα.
Για να κάνεις redirect:
return HttpResponseRedirect(reverse("η σελίδα που θέλεις") )
Για να περάσεις μεταβλητές:
return render(request, "αρχείο.html", {
"όνομα μεταβλητής":μεταβλητή ή κείμενο,
"όνομα μεταβλητής":μεταβλητή ή κείμενο,
"όνομα μεταβλητής":μεταβλητή ή κείμενο
})
Για το register.inclusion_tag('templates/newsletter.html'):
Στο Django 1.9 το 'template/κάτι' είναι κακή πρακτική. Τα templates, static και media paths τα αφήνεις να τα χειρίζεται το Django. Το μόνο που έχεις να κάνεις είναι να φτιάξεις ένα folder tree όπως το θέλει η εφαρμογή. Σε παλιότερες εκδόσεις, καλύτερα να το κάνεις όπως το έχεις γιατί θα τραβάς τα μαλλιά σου...
Για το footer:
Αν κατάλαβα καλά, θέλεις να κάνεις include το footer.html κι εκεί μέσα να καλέσεις τη φόρμα σου.
Αν όντως ισχύει αυτό έχεις ξεκινήσει λάθος. Η έννοια του footer είναι να έχει "σταθερό" content (π.χ. copyright, links, email addresses, κώδικα javascript κ.λ.π.) και δεν το χρησιμοποιούμε για να καλούμε άλλα αρχεία.
Πρέπει να ξαναδείς την δομή της εφαρμογής σου.
Υ.Γ. αν μπερδεύτηκες με αυτά που σου έγραψα μπορώ να σου γράψω κάποια παραδείγματα.
Αλλά όπως πάντα, καλύτερα RTFM
.