Utilisation d'un fichier .py comme template dans Django
Bonjour ,
Je souhaite utiliser un fichier .py en tant que template et pas un fichier HTML .
Avez vous une solution ?
Ci dessous voici mon template python . C'est un fichier que j'aie nommé app.py
Ci je lance la commande python app.py . Le gabarit fonctionne et s'affiche bien dans mon navigateur Chrome .
Mais je n'arrive pas à le lancer à partir de Django avec la commande python python manage.py runserver
import dash
import dash_bootstrap_components as dbc
from dash import dcc
from dash import html
import pandas as pd
import plotly.express as px
import requests ,base64
from io import BytesIO
import plotly.graph_objects as go
import plotly.express as px
from collections import Counter
from dash.dependencies import Input, Output
df = px.data.iris() # iris is a pandas DataFrame
fig = px.scatter(df, x="sepal_width", y="sepal_length")
# ci dessous je fais un lien vers le thème de bootstrap que j'ai choisit nommé DARKLY
app = dash.Dash(external_stylesheets=[dbc.themes.DARKLY])
# ci dessous je fais une mise en page de mon application finale avec une div vide
#app.layout = html.Div([])
# ci dessous je fais une mise en page de mon application finale avec un composant de bootstrap nommé container
# sachant que container est un composant de base à connaitre autant que row et col
# il fait parti des fondamentaux de bootstrap
app.layout = dbc.Container([
# 1 ère ligne avec 1 colonne
dbc.Row([
dbc.Col([
html.H1('Mon header')
])
]),
# 2 ème ligne avec 3 colonnes
dbc.Row([
dbc.Col([
html.H2('Nombre de cas confirmés')
],width=3),
dbc.Col([
html.H2('Nombre de décès'),
dcc.Graph(figure=fig)
],width=6),
dbc.Col([
html.H2('Nombre de personnes hospitalisées')
],width=3),
]),
# 3 ème ligne avec 1 colonnes symbolisant mon footer
dbc.Row([
dbc.Col([
html.H3('Mon footer')
])
])
])
if __name__== '__main__':
app.run_server(debug=True ,port=8888)
Salut !
Est-ce que tu as essayé avec Django dash ?
https://django-plotly-dash.readthedocs.io/en/latest/simple_use.html
Apparement niveau intégration c'est top !
Bonjour désolé , je n'arrive pas à charger DjangoDash
Cela bug à ligne 3 de mon template html nommé "dash_template.html" .
Voici la ligne 3 incriminée
{%load plotly_dash%}
Ci dessous le message d'erreur dans mon navigateur (un message d'erreur de syntaxe concernant mon template)
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/dash/
Django Version: 5.1.6
Python Version: 3.13.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\templates\myapp\plotly_dash\dash_template.html, error at line 3
'plotly_dash' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
i18n
l10n
log
static
tz
1 :
2 : <!-- templates/myapp/dash_template.html -->
3 : {%load plotly_dash%}
4 : {% plotly_app name="SimpleExample" %}
5 : <!DOCTYPE html>
6 : <html>
7 : <head>
8 : <title>Dash in Django</title>
9 : {% load static %}
10 :
11 : {% plotly_header %}
12 : <link href="{% static 'dash.css' %}" rel="stylesheet"/>
13 : </head>
Traceback (most recent call last):
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\defaulttags.py", line 1035, in find_library
return parser.libraries[name]
^^^^^^^^^^^^^^^^^^^^^^
During handling of the above exception ('plotly_dash'), another exception occurred:
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\views.py", line 9, in dash_view
return render(request, 'myapp/plotly_dash/dash_template.html', context= {"moninstance" : 5})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\shortcuts.py", line 25, in render
content = loader.render_to_string(template_name, context, request, using=using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loader.py", line 61, in render_to_string
template = get_template(template_name, using=using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loader.py", line 15, in get_template
return engine.get_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\backends\django.py", line 79, in get_template
return Template(self.engine.get_template(template_name), self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\engine.py", line 177, in get_template
template, origin = self.find_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\engine.py", line 159, in find_template
template = loader.get_template(name, skip=skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loaders\cached.py", line 57, in get_template
template = super().get_template(template_name, skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loaders\base.py", line 28, in get_template
return Template(
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 154, in __init__
self.nodelist = self.compile_nodelist()
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 196, in compile_nodelist
nodelist = parser.parse()
^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 518, in parse
raise self.error(token, e)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 516, in parse
compiled_result = compile_func(self, token)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\defaulttags.py", line 1097, in load
lib = find_library(parser, name)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\defaulttags.py", line 1037, in find_library
raise TemplateSyntaxError(
^
Exception Type: TemplateSyntaxError at /dash/
Exception Value: 'plotly_dash' is not a registered tag library. Must be one of:
admin_list
admin_modify
admin_urls
cache
i18n
l10n
log
static
tz
Ci dessous mon fichier dash_app.py
import plotly.express as px
import pandas as pd
from django_plotly_dash import DjangoDash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
# pour intégrer dash dans Django je dois créer une instance DjangoDash !
app = DjangoDash('SimpleExample') # replaces dash.Dash
# Créer une instance Dash pas mal mais à vérifier
# app = dash.Dash(__name__, server=False)
# Exemple de données
df = pd.DataFrame({
"Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
"Amount": [4, 1, 2, 2, 4, 5],
"City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"]
})
# Créer le layout de l'application Dash
app.layout = html.Div([
dcc.Dropdown(
id='dropdown',
options=[
{'label': 'SF', 'value': 'SF'},
{'label': 'Montreal', 'value': 'Montreal'}
],
value='SF'
),
dcc.Graph(id='graph')
])
# Callback pour mettre à jour le graphique en fonction du dropdown
@app.callback(
Output('graph', 'figure'),
[Input('dropdown', 'value')]
)
def update_graph(selected_city):
filtered_df = df[df['City'] == selected_city]
fig = px.bar(filtered_df, x='Fruit', y='Amount', color='Fruit')
return fig
Je n'arrive pas à lancer ce fichier python avec la commande .
(.env) PS C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp> python .\dash_app.py
C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\dash_app.py:4: UserWarning:
The dash_core_components package is deprecated. Please replace
`import dash_core_components as dcc` with `from dash import dcc`
C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\dash_app.py:5: UserWarning:
The dash_html_components package is deprecated. Please replace
`import dash_html_components as html` with `from dash import html`
Traceback (most recent call last):
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\dash_app.py", line 11, in <module>
app = DjangoDash('SimpleExample') # replaces dash.Dash
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\dash_wrapper.py", line 187, in __init__
self._serve_locally = serve_locally_setting()
~~~~~~~~~~~~~~~~~~~~~^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\util.py", line 124, in serve_locally
return _get_settings().get('serve_locally', False)
~~~~~~~~~~~~~^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\util.py", line 41, in _get_settings
the_settings = settings.PLOTLY_DASH
^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\conf\__init__.py", line 81, in __getattr__
self._setup(name)
~~~~~~~~~~~^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\conf\__init__.py", line 61, in _setup
raise ImproperlyConfigured(
...<4 lines>...
)
django.core.exceptions.ImproperlyConfigured: Requested setting PLOTLY_DASH, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
(.env) PS C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp>
ci dessous le code de mon fichier views.py
from django.shortcuts import render,HttpResponse
# Create your views here.
# ma premiere vue
def dashboard(request):
return HttpResponse("<h1>Hello World</h1>")
# ma deuxieme vue
def dash_view(request):
return render(request, 'myapp/plotly_dash/dash_template.html', context= {"moninstance" : 5})
ci dessous mon fichier urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.dashboard, name='dashboard'),
path('dash/', views.dash_view, name='dash-view'),
]
ci dessous le code de mon template
<!-- templates/myapp/dash_template.html -->
{%load plotly_dash%}
{% plotly_app name="SimpleExample" %}
<!DOCTYPE html>
<html>
<head>
<title>Dash in Django</title>
{% load static %}
{% plotly_header %}
<link href="{% static 'dash.css' %}" rel="stylesheet"/>
</head>
<body>
<div id="dash-app"></div>
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/dash/1.20.0/dash.min.js"></script>
<!-- Charger l'instance app qui a été crée dans le fichier nommé dash_app.py-->
<h1>Je suis passé dans le template</h1>
<script>
{{ app }}
</script>
</body>
</html>
Si je renonce à charger mon fichier dash_app.py , mon template fonction cad le fichier css charge et la balise "h1" affiche que je suis passé dans le template .
Si je dois régler mon fichier settings.py .Je ne sais pas ce que je dois y faire .
Bonjour ,
C'est passé , mais maintenant , c'est la ligne du dessous qui stop !
cad ici
{% plotly_dash name="SimpleExample" %}
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/dash/
Django Version: 5.1.6
Python Version: 3.13.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
'django_plotly_dash']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\templates\myapp\plotly_dash\dash_template.html, error at line 10
Invalid block tag on line 10: 'plotly_dash'. Did you forget to register or load this tag?
1 :
2 : <!-- templates/myapp/dash_template.html -->
3 :
4 : <!DOCTYPE html>
5 : <html>
6 : <head>
7 : <title>Dash in Django</title>
8 : {% load static %}
9 : {% load plotly_dash %}
10 : {% plotly_dash name="SimpleExample" %}
11 : {% plotly_header %}
12 : <link href="{% static 'dash.css' %}" rel="stylesheet"/>
13 : </head>
14 : <body>
15 : <div id="dash-app"></div>
16 : <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
17 : <script src="https://cdnjs.cloudflare.com/ajax/libs/dash/1.20.0/dash.min.js"></script>
18 : <!-- Charger l'instance app qui a été crée dans le fichier nommé dash_app.py-->
19 : <h1>Je suis passé dans le template</h1>
20 :
Traceback (most recent call last):
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 510, in parse
compile_func = self.tags[command]
^^^^^^^^^^^^^^^^^^
During handling of the above exception ('plotly_dash'), another exception occurred:
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\views.py", line 9, in dash_view
return render(request, 'myapp/plotly_dash/dash_template.html', context= {"moninstance" : 5})
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\shortcuts.py", line 25, in render
content = loader.render_to_string(template_name, context, request, using=using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loader.py", line 61, in render_to_string
template = get_template(template_name, using=using)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loader.py", line 15, in get_template
return engine.get_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\backends\django.py", line 79, in get_template
return Template(self.engine.get_template(template_name), self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\engine.py", line 177, in get_template
template, origin = self.find_template(template_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\engine.py", line 159, in find_template
template = loader.get_template(name, skip=skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loaders\cached.py", line 57, in get_template
template = super().get_template(template_name, skip)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loaders\base.py", line 28, in get_template
return Template(
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 154, in __init__
self.nodelist = self.compile_nodelist()
^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 196, in compile_nodelist
nodelist = parser.parse()
^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 512, in parse
self.invalid_block_tag(token, command, parse_until)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 573, in invalid_block_tag
raise self.error(
^
Exception Type: TemplateSyntaxError at /dash/
Exception Value: Invalid block tag on line 10: 'plotly_dash'. Did you forget to register or load this tag?
J'aie crée un dossier nommé "plotly_dash" et dedans j'aie mis mon template html . Je ne sais si je devais procéder comme cela .
( le chemin fait templates\myapp\plotly_dash\dash_template.html .
Ci dessous mon fichier settings.py
```
"""
Django settings for hop project.
Generated by 'django-admin startproject' using Django 5.1.6.
For more information on this file, see
https://docs.djangoproject.com/en/5.1/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/5.1/ref/settings/
"""
from pathlib import Path
Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(file).resolve().parent.parent
Quick-start development settings - unsuitable for production
See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/
SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-wqp+-ex-rfeal9r2)&k!s0(63edz00er6ny3ljm=ixrb^@r+%e'
SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
'django_plotly_dash'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'hop.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'hop.wsgi.application'
Database
https://docs.djangoproject.com/en/5.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Password validation
https://docs.djangoproject.com/en/5.1/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
Internationalization
https://docs.djangoproject.com/en/5.1/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
Static files (CSS, JavaScript, Images)
https://docs.djangoproject.com/en/5.1/howto/static-files/
STATIC_URL = 'static/'
Default primary key field type
https://docs.djangoproject.com/en/5.1/ref/settings/#default-auto-field
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
```
Encore un bug !
```
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/dash/
Django Version: 5.1.6
Python Version: 3.13.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myapp',
'django_plotly_dash']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\templates\myapp\plotly_dash\dash_template.html, error at line 10
'the_django_plotly_dash' is not a registered namespace
1 :
2 :
3 :
4 : <!DOCTYPE html>
5 : <html>
6 : <head>
7 : <title>Dash in Django</title>
8 : {% load static %}
9 : {% load plotly_dash %}
10 : {% plotly_app name="SimpleExample" %}
11 : <link href="{% static 'dash.css' %}" rel="stylesheet"/>
12 : </head>
13 : <body>
14 :
15 : <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
16 : <script src="https://cdnjs.cloudflare.com/ajax/libs/dash/1.20.0/dash.min.js"></script>
17 :
18 :
19 :
20 : <script></script></body></html>
C'est ce que je fait et j'aie constaté que ce bouton faisait des affichages parfois étranges .
Peut - être avec le bouton "quotes" comme ceci ...
> Environment:
>
>
> Request Method: GET
> Request URL: http://127.0.0.1:8000/dash/
>
> Django Version: 5.1.6
> Python Version: 3.13.0
> Installed Applications:
> ['django.contrib.admin',
> 'django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'myapp',
> 'django_plotly_dash']
> Installed Middleware:
> ['django.middleware.security.SecurityMiddleware',
> 'django.contrib.sessions.middleware.SessionMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.contrib.auth.middleware.AuthenticationMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'django.middleware.clickjacking.XFrameOptionsMiddleware']
>
>
> Template error:
> In template C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\templates\myapp\plotly_dash\dash_template.html, error at line 19
> 'the_django_plotly_dash' is not a registered namespace
> 9 : {% load plotly_dash %}
> 10 :
> 11 : <link href="{% static 'dash.css' %}" rel="stylesheet"/>
> 12 :
> 13 : <body>
> 14 : <div id="dash-app"></div>
> 15 : <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
> 16 : <script src="https://cdnjs.cloudflare.com/ajax/libs/dash/1.20.0/dash.min.js"></script>
> 17 :
> 18 : <h1>Je suis passé dans le template</h1>
> 19 : {% plotly_app name="SimpleExample" %}
> 20 : <script>
> 21 : {{ app }}
> 22 : </script>
> 23 : </body>
> 24 :
> 25 :
>
> Traceback (most recent call last):
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\urls\base.py", line 71, in reverse
> extra, resolver = resolver.namespace_dict[ns]
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> During handling of the above exception ('the_django_plotly_dash'), another exception occurred:
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
> response = get_response(request)
> ^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
> response = wrapped_callback(request, *callback_args, **callback_kwargs)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\src\myapp\views.py", line 9, in dash_view
> return render(request, 'myapp/plotly_dash/dash_template.html', context= {"moninstance" : 5})
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\shortcuts.py", line 25, in render
> content = loader.render_to_string(template_name, context, request, using=using)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\loader.py", line 62, in render_to_string
> return template.render(context, request)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\backends\django.py", line 107, in render
> return self.template.render(context)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 171, in render
> return self._render(context)
> ^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 163, in _render
> return self.nodelist.render(context)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 1008, in render
> return SafeString("".join([node.render_annotated(context) for node in self]))
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\base.py", line 969, in render_annotated
> return self.render(context)
> ^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\template\library.py", line 258, in render
> _dict = self.func(*resolved_args, **resolved_kwargs)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\templatetags\plotly_dash.py", line 101, in plotly_app
> da, app = _locate_daapp(name, slug, da, cache_id=cache_id)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\templatetags\plotly_dash.py", line 58, in _locate_daapp
> da, app = DashApp.locate_item(name, stateless=True, cache_id=cache_id)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\models.py", line 231, in locate_item
> app = dash_app.as_dash_instance(cache_id=cache_id)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\dash_wrapper.py", line 230, in as_dash_instance
> return self.do_form_dash_instance(cache_id=cache_id)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\dash_wrapper.py", line 265, in do_form_dash_instance
> ndid, base_pathname = self.get_base_pathname(specific_identifier, cache_id)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django_plotly_dash\dash_wrapper.py", line 257, in get_base_pathname
> full_url = reverse(app_pathname, kwargs=kwargs)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> File "C:\Users\Antunes Sebastien\Desktop\Dashboard\hop\.env\Lib\site-packages\django\urls\base.py", line 82, in reverse
> raise NoReverseMatch("%s is not a registered namespace" % key)
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> Exception Type: NoReverseMatch at /dash/
> Exception Value: 'the_django_plotly_dash' is not a registered namespace
Bonjour ,
effectivement , il me manquait
urlpatterns = [
...
path('django_plotly_dash/', include('django_plotly_dash.urls')),
]
et il me manquait aussi
# X-Frame-Options indiquer par la doc officielle
X_FRAME_OPTIONS = 'SAMEORIGIN'
Dans mon fichier settings.py .
Mea culpa , je ne sais pas bien lire les documentations .L'idéal serait que les documentations soient transformées en supports vidéos concrets .
En tout cas coté django-dash-plotly, c'est bon ...
Maintenant , je peux commencer à coder l'application dash avec mon fichier dash_app.py et ne plus me soucier de codage en HTML coté template .
Pour l'instant , j'aie mon dropdown qui s'est chargé mais pas le graphique en barres .
Je vais cherché de mon coté , investiguer la documentation dash et plotly et je cloture ce post .
Merci monsieur !...
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte
