Il m'a fallu un certain temps pour savoir comment utiliser le tableau d'une autre application, je vais donc l'écrire sous forme d'article.
Il existe deux manières principales de le faire.
Cette méthode est expliquée cette fois.
Intégrer les applications qui souhaitent partager une table en une seule application. Selon l'idée de base de Django, "Chaque application ne doit pas avoir de dépendance", ** C'est une approche simple ** </ font>.
En termes simples, lorsqu'il existe des applications A </ font> et B </ font>, elles sont définies sur l'application A </ font>. Le fait que B </ font> utilise la table créée signifie que B </ font> a A </ font>. En effet, ce sera la première application à fonctionner = ** " B </ font> dépend de A </ font>" **.
** Cela dit, ** Je pense qu'il y a des moments où vous ne pouvez pas apporter de modifications majeures pour intégrer des applications dans un système qui fonctionne déjà en production. Dans cet article, je vais vous présenter une voie de sortie qui peut être utilisée dans de tels cas.
Si vous utilisez PyCharm ou VSCode, vous verrez une inspection de l'erreur (probablement dans d'autres IDE et éditeurs) ** Ignorez-le **. Python a une règle selon laquelle ** la source d'importation doit être dans la même couche ou la couche inférieure **, mais c'est une méthode d'importation d'une manière qui enfreint les règles.
Créez en fait une application A </ font> et une application B </ font>, et de B </ font> à A A < Allez voir le tableau / font>.
> mkdir django-model-test
> cd django-model-test
django-model-test> python -m venv venv
django-model-test> venv\Scripts\activate #Pour les fenêtres
django-model-test> source venv/bin/activate # Mac,Pour Linux
(venv) django-model-test> pip install django
(venv) django-model-test> mkdir Src
(venv) django-model-test> cd Src
(venv) django-model-test\Src> django-admin startproject config .
(venv) django-model-test\Src> python manage.py runserver
Si vous accédez à localhost: 8000 et que l'écran de démonstration de Django s'affiche, c'est OK.
Quittez le serveur de test avec Ctrl + C et continuez. Exécutez la commande suivante
django-model-test\Src> python manage.py startapp appA
django-model-test\Src> python manage.py startapp appB
Ajouté à INSTALLED_APPS dans settings.py
django-model-test\Src\config\settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Postscript
'appA.apps.AppaConfig',
'appB.apps.AppbConfig'
]
Définir urls.py
django-model-test\Src\config\urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('appB/', include('appB.urls', namespace='appB'))
]
django-model-test\Src\appB\urls.py
from django.urls import path
from . import views
app_name = 'appB'
urlpatterns = [
path('', views.top_page, name='top_page'),
]
]
Créer index.html (et répertoire de destination)
django-model-test\Src\appB\templates\appB\index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
Succès de référence!
</body>
</html>
Créez une table de test dans models.py de appA
django-model-test\Src\appA\models.py
from django.db import models
class AppATable(models.Model):
sample = models.TextField()
Exécutez la migration depuis le terminal
django-model-test\Src> python manage.py makemigrations
django-model-test\Src> python manage.py migrate
Enfin, créez l'essentiel Views.py! La troisième ligne ne peut probablement pas être référencée et une erreur se produira, mais veuillez l'ignorer.
django-model-test\Src\appB\views.py
from django.shortcuts import render
from django.views.generic import View
from appA.models import AppATable
class TopPageView(View):
def get(self, request, *args, **kwargs):
appATable_data = AppATable.objects.all()
print(appATable_data.values())
return render(request, 'appB/index.html')
top_page = TopPageView.as_view()
Mettez les données de test dans le DB. Cette fois, je l'ai fait à partir de l'EDI, mais si vous n'avez pas l'outil, vous pouvez le saisir depuis le site de gestion de Django.
C'est tout pour la préparation. Démarrez le serveur de test et accédez à [localhost: 8000 / appB]. C'est OK si le texte "Référence réussie!" Est affiché sur le navigateur et le résultat de l'instruction d'impression (contenu de appATable) est affiché depuis le terminal.
C'est tout. Merci pour votre travail acharné: cat2: