2016-06-09 7 views
1

Wo sollte ich Informationen wie die E-Mail des Administrators, die Telefonnummer speichern? Ich möchte, dass Admin diese Daten jederzeit ändern kann.Wo kann man globale Daten in Django speichern?

Jetzt habe ich ein Modell dafür. Es heißt AdminContact und es erlaubt nur eine Zeile. Ich denke, es ist kein geeigneter Weg, dies zu tun. Außerdem verursacht es zirkuläre Abhängigkeiten. Zum Beispiel kann ich mein Modell email nicht verwenden, das alle Kontaktmethoden wie send_message_to_all_users, send_alert_to_admin in Modellen aufgrund von zirkulären Abhängigkeiten enthält. Jetzt

So wie ich es tun:

# -*- coding: utf-8 -*- 
from django.core.mail import EmailMessage 
from models import AdminContact 

def send_message_to_admin(subject,message): 
    EmailMessage(subject,message,to=[AdminContact.objects.all()[0].email]).send() 

Können Sie mir geben irgendwelche Empfehlungen, wie diese Art von Daten zu behandeln?

+0

Ist kein Django in 'User' Modell gebaut, was Sie brauchen? –

+0

Django hat Benutzer. Benutzer haben die Flags is_staff und is_superuser, die Sie verwenden können, oder Sie können Ihr eigenes Flag hinzufügen, um Administratoren zu bestimmen. Benutzer haben ein E-Mail-Feld und Sie können weitere Felder in einem Benutzerprofilmodell hinzufügen. –

+0

Django hat auch eine eingebaute Möglichkeit, alle Admins per E-Mail zu senden. Sie erfinden das Rad überall neu! –

Antwort

1

Eine feine Möglichkeit, dies zu tun, ist es, wie so in Ihrer settings.py Datei setzen:

ADMIN_CONTACT = {email: '[email protected].com', phone: '0585522002'}

Dann können Sie es überall zugreifen, indem django Einstellungen importieren:

from django.conf import settings 
from django.core.mail import EmailMessage 

def send_message_to_admin(subject,message): 
    EmailMessage(subject,message,to=[settings.ADMIN_CONTACT['email']]).send() 

Caveat :

Sie können diese Werte nur durch Ändern derersetzenCode.

Andere Lösungen:

Sie auch die Basis User Modell können alle Superuser erhalten und sie, oder geben Sie einen Blick auf django-constance, die Sie Konstanten zu db Seite und bearbeitet werden vom django-admin speichern ermöglicht Mail .

+0

Nicht sicher, warum diese Antwort abgelehnt wurde. Setzen Sie es in Ihre Einstellungen wie Maxime sagt und Sie können global darauf zugreifen. Abstrakt sensitive Informationen wie diese aus Ihren Grundeinstellungen. Wenn sich Ihr Code in der Quellcodeverwaltung befindet, stellen Sie sicher, dass Sie diese sensible Datei ".gitignore" (oder das von Ihnen verwendete Quellcode-Steuerelement) verwenden. – smilebomb

+0

@Maxime Danke, ich denke, dass ich django-constance verwenden werde, da ich mehr Daten speichern möchte, zum Beispiel Einstellungen wie - wie viel Übersetzung einer Seite etc. –

+0

Cool, vergiss nicht, die Antwort dann zu akzeptieren :) –

Verwandte Themen