[PYTHON] Configurer un module avec plusieurs fichiers dans Django

Je doute que les termes du titre soient corrects. .. .. .. .. ..

Mémorandum pour moi

Objectif

Lors de la création d'un programme à l'aide de Django Pour être pratique lorsque l'échelle de l'application augmente Organisez la procédure de division des modules tels que les vues et les modèles en plusieurs fichiers.

supposition

L'environnement est le suivant

Ubuntu 16.04
python 3.5.2
django 1.10.5

procédure

Ici, divisons models.py en plusieurs fichiers.

Diviser le modèle en plusieurs fichiers

Etat initial


__init__.py
admin.py
apps.py
migrations
models.py
tests.py
views.py

Ici, modifiez models.py afin que 1 fichier = 1 classe de modèle.

Avec le répertoire des modèles__init__.Préparer le fichier py


__init__.py
admin.py
apps.py
migrations
models
    __init__.py
    task.py
tests.py
views.py

Supprimez models.py et préparez le répertoire models comme indiqué dans le code ci-dessus. Un fichier qui décrit le fichier __init.py ____ et la classe de modèle qu'il contient Créez (ici, task.py).

task.py


from django.db import models


class Task(models.Model):
    """
    Task to do.
    """
    name = models.CharField(max_length=30)
    startTime = models.DateTimeField()
    endTime = models.DateTimeField()
    memo = models.CharField(max。_length=200)

__init__fichier py


from webui.models.task import Task #Importez la classe créée ci-dessus

Diviser la vue en plusieurs fichiers

La méthode de division du fichier est la même.

  1. Supprimer views.py
  2. Créez un répertoire de vues
  3. Créez un fichier approprié sous le répertoire views
  4. Créez un fichier views / __init __.py
  5. Importez les classes et méthodes dans le fichier créé en 3. avec le fichier __init __.py

Division de fichier


__init__.py
admin.py
apps.py
migrations
models
    __init__.py
    task.py
tests.py
views
    __init__.py
    task_view.py

Description dans urls.py

Le module de vue doit être décrit dans urls.py

Si vous définissez une vue par méthode

Diviser les vues en plusieurs fichiers Si tu fais comme

urls.py(Basé sur la méthode)


urlpatterns = [
    ...,
    url(r'^Expression régulière appropriée',Nom de l'application.views.nom de fichier.Nom de la méthode)
]

La méthode à spécifier depuis ... import est également dans le lien mentionné au début de cette section. Bien qu'il soit décrit, le même nom de méthode ne peut pas être spécifié, donc l'exemple de code ci-dessus Je pense qu'il vaut mieux utiliser ** peut-être **.

Si vous définissez des vues sur une base de classe

En cas d'unité de classe comme indiqué dans Faire de Django views.py une classe Cela devient comme suit.

urls.py(Basé sur la classe)


urlpatterns = [
    ...
    url(r'^/Expression canonique d'URL/$',Nom de l'application.views.afficher le nom de la classe.as_view()),
    ...
]

En déclarant from ... import comme dans le cas de la méthode base Vous ne devriez pas avoir besoin d'écrire le nom du package.

Matériel de référence

Faire de Django views.py une classe Diviser les vues en plusieurs fichiers

Recommended Posts

Configurer un module avec plusieurs fichiers dans Django
[Python] Récupérez les fichiers dans le dossier avec Python
Enregistrez plusieurs modèles sous un seul formulaire avec Django
Créez un environnement Django avec Vagrant en 5 minutes
Comment référencer des fichiers statiques dans un projet Django
Créer une page d'accueil avec django
Télécharger plusieurs fichiers avec Flask
Essayez d'exécuter python dans l'environnement Django créé avec pipenv
[Django] Gérez les paramètres comme l'écriture dans settings.py avec un modèle
Jusqu'à ce que Django retourne quelque chose avec un robot de ligne!
recharger dans le shell django avec ipython
Énumérer les fichiers avec des extensions spécifiques
Gérer les fichiers csv avec Django (django-import-export)
Charger plusieurs fichiers JavaScript avec PyWebView
Gérer les fichiers de configuration Django avec Python-decouple
Déployer l'application Django avec Docker
Django Tips-Créez un site de classement avec Django-
Créer une application Web avec Django
Créer un filtre avec un modèle django
API GraphQL utilisant graphene_django dans Django
Créer un téléchargeur de fichiers avec Django
Créer un bot LINE avec Django
Obtenez une liste de fichiers dans un dossier avec python sans chemin
Installer Django dans l'environnement virtuel pipenv
Générer tous les fichiers avec une extension spécifique
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Lecteur RSS simple réalisé avec Django
Utilisation de plusieurs projets Django dans Apache (WSGIDaemonProcess)
Dessinez un cœur en rubis avec PyCall
Remarques sur la création de fichiers statiques avec Django
[Peut être fait en 10 minutes] Créez rapidement un site Web local avec Django
Créer un écran de connexion dans Django all auth
Spécifiez dynamiquement le jeu de requêtes ModelChoiceField dans Django
Traiter plusieurs listes avec for en Python
Remarques sur l'activation de PostgreSQL avec Django
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Implémenter un modèle utilisateur personnalisé dans Django
J'ai fait une application WEB avec Django
Je voulais connaître le nombre de lignes dans plusieurs fichiers et j'ai essayé de l'obtenir avec une commande
Envoyer un e-mail avec un utilisateur autre que EMAIL_HOST_USER écrit dans les paramètres de django
Je souhaite voir une liste de fichiers WebDAV dans le module Requêtes
Transformez plusieurs listes avec l'instruction for en même temps en Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Erreur lors de l'installation d'un module avec Python pip
Dessinez un graphique avec des étiquettes japonaises dans Jupyter
Supprimer des données dans un modèle avec Redis Cluster
Comment développer une application de panier avec Django
Créer un environnement virtuel avec conda avec Python
Activez Django https en quelques lignes
Rechercher récursivement tous les fichiers avec plusieurs extensions spécifiées
Créez un tableau de bord pour les appareils réseau avec Django!
Cloner avec une branche / balise spécifique dans GitPython
Gérer les fichiers zip avec des noms de fichiers japonais dans Python 3
Connectez-vous facilement à AWS avec plusieurs comptes
Une histoire sur l'implémentation d'un écran de connexion avec django
Encodage de caractères lors du traitement de fichiers en Python 3
Créer un environnement de développement Django à l'aide de Doker Toolbox
Pour ajouter un module à python que vous mettez dans Julialang
Travaillez dans un environnement virtuel avec Python virtualenv.