2016-04-09 2 views
0
def get(self , request , format=None): 
    body = request.data 
    name = body.get('name',"The_Flash") 

Dans ce cas, je hardcoded la valeur The_Flash si le request.data reçoit aucune valeur pour nom, mais je sais que ce n'est pas une manière saine . Je veux que cela soit ajouté en tant que variable dans le fichier settings.py de mon projet django. Je suis allé à travers des références de SO comme this et quelques autres mais ce n'est pas ce que je veux. Quelqu'un peut-il me dire quelle est la manière la plus robuste de le faire. J'utilise Django 1.8.ajouter des variables dans les paramètres à utiliser dans les vues - Django

+0

Pouvez-vous, s'il vous plaît, expliquer pourquoi vous pensez que ce n'est pas une «façon saine» de le faire? Cette approche n'est-elle pas plus lisible que l'accès à une constante? –

+0

Les choses hardcoding ne sont pas correctes. Ce n'est peut-être pas le seul cas où j'en ai besoin. Si je garde les choses codées en dur, au cas où je voudrais changer cette valeur codée en dur, je devrai changer de toutes les instances qui pourraient ne pas être réalisables si je travaille avec beaucoup de ces instances. –

+0

Que diriez-vous de cette approche https://gist.github.com/aswinpj/baf79d2f1ff212b8552d7164ce1bd5a5 –

Répondre

3

Nous avons tendance à stocker paramètres variables dans un module dans l'application appelé app_settings.py, et utilise ceci pour définir les valeurs par défaut pour les paramètres et permettent à l'utilisateur de les remplacer dans settings.py de Django:

# app_settings.py 
from django.conf import settings 

MY_SETTING = getattr(settings, 'APP_NAME_MY_SETTING', 'the_default_value') 

ensuite importer dans vos vues et de l'utiliser:

# views.py 
from app_settings import MY_SETTING 

Et les utilisateurs peuvent le remplacer dans leurs paramètres du projet:

# project's settings.py 
APP_NAME_MY_SETTING = 'something else' 

Cela vous permet de le modifier par le déploiement, etc.

1

Vous pouvez stocker des constantes dans un fichier séparé et l'importer dans votre projet

dossier/

appconfigurations.py 
views.py 

appconfigurations.py

YOUR_CONSTANT = "constant_value" 

views.py

from appconfigurations import * 

def your_view(request): 
    constant = YOUR_CONSTANT