2009-04-18 25 views
7

Puede sonar trivial, pero me gustaría saber dónde se supone que coloqué mis clases de python (no de Model)?¿Cuál es el mejor lugar para las clases de python en un proyecto de Django?

Quiero decir, mis clases de modelo están definidas en myapp/models.py pero quiero, por ejemplo, usar un marco de feed de sindicación para escribir un feed simple. The doc dice que necesito escribir una clase de Feed pero ... ¿Dónde debería poner el código? ¿Qué ruta y archivo? Me gustaría mantener la estructura de directorios predeterminada de Django.

Gracias!

Respuesta

8

Puede ponerlo donde desee.

ejemplo:

project 
    myapp 
    views.py 
    models.py 
    feeds.py 

A continuación, puede importar que estés alimenta el módulo mediante el uso de importación.

de project.myapp.feeds importar *

directorio Hacer es mejor cuando se trabaja con una gran cantidad de archivos. Por ejemplo:

project 
    myapp 
     models.py 
     views.py 
     extras 
     feeds.py 
     sitemaps.py 

le sugiero que lea esto: Python Modules: Packages

+0

Entonces ... ¿no hay ninguna convención de Django para ello? Si tengo varias clases, ¿debo crear una carpeta "classes" en myapp dir? Gracias! –

+2

Sugiero que no, genera mucha confusión. es más limpio que tener presente: project.myapp.feeds que project.myapp.classed.feeds Eventualmente se puede hacer esto: project.myapp.extras.feeds proyecto miaplicacion extras feed –

+0

He actualizado mi respuesta. –

2

Para las clases relacionadas con el canal, es convencional para colocarlos en un módulo llamado feeds en el módulo de aplicación apropiada. Por ejemplo, si usted tiene un blog con un feed RSS, su estructura del proyecto se vería así:

project/ 
    blog/ 
     __init__.py 
     feeds.py 
     models.py 
     views.py 

En general, para otras clases no modelo, se puede poner en cualquier lugar que desee (como se ha señalado por Andrea Di Persio). Normalmente los coloca como un módulo en el paquete de aplicación apropiado. Para las clases de uso general, Por lo general crear un paquete llamado lib que contiene las clases y funciones generales, así:

project/ 
    blog/ 
     __init__.py 
     feeds.py 
     models.py 
     other_stuff.py 
     views.py 
    lib/ 
     __init__.py 
     things.py 
+0

¡Gracias por los consejos! –

0
Models.py 

es un mejor lugar para sus clas Beacuse modelos tienen assesentory a los datos (en la base de datos)

Cuestiones relacionadas