Ajoutez efficacement plusieurs pages HTML dans Django
P粉356128676
P粉356128676 2023-07-20 18:47:03
0
1
539

J'ai créé une application Django simple qui crée une page HTML distincte pour chaque État américain. La page de chaque état étend base.html, mais avec un contenu différent.

Les URL sont déclarées dans le fichier URLs.py et le rendu de la page est mappé dans vues.py.

J'aimerais savoir comment augmenter le nombre de pages de manière évolutive, éventuellement par centaines, voire par milliers, sans déclarer explicitement le nom de chaque page dans les fichiers views.py et urls.py.

Comment mettre cela en œuvre correctement ?

Fichier HTML

base.html states_info_app/index.html alabama-weather.html alaska-population.html arizona-schools.html arkansas-hospitals.html california-restaurants.html colorado-colleges.html connecticut-gyms.html

Views.py

from django.shortcuts import render from django.views import View def index(request): return render(request, 'states_info_app/index.html') def alabama(request): return render(request, 'alabama-weather.html') def alaska(request): return render(request, 'alaska-population.html') def arizona(request): return render(request, 'arizona-schools.html') def arkansas(request): return render(request, 'arkansas-hospitals.html') def california(request): return render(request, 'california-restaurants.html') def colorado(request): return render(request, 'colorado-colleges.html') def connecticut(request): return render(request, 'connecticut-gyms.html')

URLs.py

from django.contrib import admin from django.urls import path from states_info_app.views import index from states_info_app import views urlpatterns = [ path('admin/', admin.site.urls), path('', index, name='index'), path('states', views.states, name='states'), path('alabama-weather', views.alabama, name='alabama'), path('alaska-population', views.alaska, name='alaska'), path('arizona-schools', views.arizona, name='arizona'), path('arkansas-hospitals', views.arkansas, name='arkansas'), path('california-restaurants', views.california, name='california'), path('colorado-colleges', views.colorado, name='colorado'), path('connecticut-gyms', views.connecticut, name='connecticut') ]


P粉356128676
P粉356128676

répondre à tous (1)
P粉596161915

Pour ajouter efficacement des centaines ou des milliers de pages HTML avec des noms différents dans Django sans déclarer explicitement chaque page dans les fichiers vues.py et urls.py, vous pouvez utiliser le routage d'URL dynamique et les vues génériques. Voici la bonne façon de procéder :

Modifiez le fichier urls.py :

from django.contrib import admin from django.urls import path from states_info_app.views import index, StateDetailView from states_info_app import views urlpatterns = [ path('admin/', admin.site.urls), path('', index, name='index'), path('states', views.states, name='states'), path('/', StateDetailView.as_view(), name='state-detail') ]

Modifier le fichier vues.py :

from django.shortcuts import render from django.views import View from django.views.generic import DetailView class StateDetailView(DetailView): template_name = 'states_info_app/base.html' model = YourStateModel # Replace this with the actual model you're using for states def get_template_names(self): state_slug = self.kwargs['state_slug'] return [f'states_info_app/{state_slug}.html']

Dans cette configuration, nous utilisons un modèle d'URL dynamique slug:state_slug/ dans urls.py qui capturera le nom de n'importe quel état et le transmettra à StateDetailView. StateDetailView est une vue générique basée sur une classe qui restitue des modèles dynamiques basés sur le state_slug capturé à partir de l'URL.

Avec cette implémentation, vous pouvez facilement ajouter de nouvelles pages HTML pour chaque état sans modifier les fichiers vues.py ou urls.py. Assurez-vous simplement de créer les fichiers HTML correspondants pour chaque état, suivez la convention de dénomination et Django s'occupera du reste. Par exemple, si vous avez ajouté un nouvel état nommé "delaware", créez simplement un nouveau fichier HTML nommé "delaware.html" dans le dossier modèle "states_info_app", qui sera accessible via l'URL "votredomaine.com/delaware" /" accéder. Cette approche vous permet de faire évoluer votre application pour gérer un grand nombre de pages d'état sans avoir à ajuster manuellement les vues et les configurations d'URL.

    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!