with tutorial the para latest framework espaƱol desde cero applications python django

tutorial - use django: de "python manage.py shell" a la secuencia de comandos de python



the django project (8)

Aquí hay una variante más: escribí y con frecuencia uso un comando de administración "ejecutar" que tiene la ventaja de que los scripts pueden ver sus parámetros de línea de comandos:

http://lino-framework.org/api/lino.management.commands.run.html

Puedo moverme a un directorio de proyecto de Python (por ejemplo, c: / www / myproject) y luego emitir

python manage.py shell

y luego puedo usar todos los módulos del proyecto django, digamos los siguientes comandos del comando de shell:

import settings from django.template import Template, Context t=Template("My name is {myname}.") c=Context({"myname":"John"}) f = open(''write_test.txt'', ''w'') f.write(t.render(c)) f.close

ahora, cuando intenté recopilar todos mis comandos en un script de Python, diga "mytest.py", no puedo ejecutar el script. Debo perderme algo importante.

Emití python mytest.py

luego obtuve el Import error: could not import settings ¿Está en la ruta del sistema?

Estoy en el directorio del proyecto donde reside settings.py .....

¿Podria alguien ayudarme?

Gracias.


En lugar de agregar cosas manualmente a su script de Python, o tener que ajustar el formato del comando de administración, en caso de que esto no sea algo que deba permanecer por mucho tiempo, puede obtener todos los beneficios del entorno Django ejecutando su script con ./manage.py runscript <myscript.py>

... pero si su script está en la carpeta de su proyecto, entonces puede agregar esta línea a la parte superior del script de python: import os; os.environ[''DJANGO_SETTINGS_MODULE''] = ''settings'' import os; os.environ[''DJANGO_SETTINGS_MODULE''] = ''settings''


Este método está en deprecated en Django 1.4. Use django.conf.settings.configure() lugar (vea la respuesta de @adiew para el código de ejemplo).

El viejo método sigue.

Pon esto al principio de tu guión.

from django.core.management import setup_environ import settings setup_environ(settings)

Esto es realmente lo que hace manage.py detrás de la escena. Para verlo, vea la fuente de Django en django/core/management/__init__.py . Después de ejecutar estas líneas, todo debería ser como en ./manage.py shell .


Intenta poner estas dos líneas al comienzo de tu script:

from django.conf import settings settings.configure() # check django source for more detail # now you can import other django modules from django.template import Template, Context


Para importar la configuración de Django usa:

from django.conf import settings


Trate de usar un comando de gestión Django en su lugar.

# myproject/myapp/management/commands/my_command.py from django.core.management.base import NoArgsCommand from django.template import Template, Context from django.conf import settings class Command(NoArgsCommand): def handle_noargs(self, **options): t=Template("My name is {myname}.") c=Context({"myname":"John"}) f = open(''write_test.txt'', ''w'') f.write(t.render(c)) f.close

Y luego (si sigue los documentos) podrá ejecutar el comando de la siguiente manera:

python manage.py my_command


Vio en https://.com/a/24456404/4200284 una buena solución para Django> = 1.7 y en caso de que alguien use configuraciones django, esto funcionó para mí:

import sys, os, django sys.path.append(''/path/to/project'') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.local") # path to config ## if using django-configurations os.environ.setdefault("DJANGO_CONFIGURATION", "Local") from configurations import importer importer.install() django.setup() ## apparently important for django 1.7 from foo.models import Bar print Bar.objects.all()


ACTUALIZACIÓN: Desde otro post .

./manage.py shell < myscript.py