


Compétences en système de gestion backend dans le framework Django (Partie 2)
Compétences du système de gestion backend dans le framework Django (Partie 2)
Dans l'article précédent, nous avons présenté certaines compétences du système de gestion backend dans le framework Django, telles que comment personnaliser la mise en page d'arrière-plan, comment personnaliser les filtres, comment personnaliser les actions, etc. Cet article continuera à présenter des conseils plus pratiques pour vous aider à mieux utiliser le framework Django.
- Comment gérer la valeur par défaut de ForeignKey dans le modèle
Dans Django Model, ForeignKey est un type de champ très pratique. Cependant, lorsque nous créons une nouvelle instance de modèle, le champ de type ForeignKey doit spécifier une instance du modèle associé afin d'être enregistré avec succès. Si elles ne sont pas spécifiées, les valeurs NULL seront enregistrées par défaut. Dans certains cas, nous pouvons souhaiter que le champ de type ForeignKey soit enregistré dans une instance d'association par défaut. Dans ce cas, nous pouvons utiliser la méthode get_or_create de Django.
Par exemple, nous avons un modèle de produit et définissons un champ ProductCategory ForeignKey pour celui-ci. Nous souhaitons associer automatiquement une instance de catégorie par défaut lorsque nous créons une nouvelle instance de produit. Nous pouvons ajouter le code suivant au modèle :
class Product(models.Model): name = models.CharField(max_length=100) category = models.ForeignKey(ProductCategory, default=get_default_category) def get_default_category(): """ 返回默认的ProductCategory实例或者创建一个新的实例 """ category, _ = ProductCategory.objects.get_or_create(name='Default Category') return category
In. de cette façon, lorsque nous créons une nouvelle instance Product, une instance ProductCategory nommée "Default Category" sera automatiquement associée par défaut.
- Comment restreindre un modèle dans le système de gestion en arrière-plan pour ne créer qu'une seule instance ?
Dans certains cas, nous pouvons souhaiter qu'un modèle crée une seule instance, comme les paramètres globaux du site Web. À l'heure actuelle, vous pouvez utiliser la bibliothèque SingletonModel de Django, qui fournit un BaseSingletonModel qui nous permet de convertir facilement n'importe quel modèle en modèle Singleton.
Par exemple, nous avons un modèle GlobalSettings et espérons qu'il ne pourra créer qu'une seule instance. Il peut être défini comme ceci :
from singleton_models.models import SingletonModel class GlobalSettings(SingletonModel): site_name = models.CharField(max_length=100, default='') site_url = models.URLField(default='') # 其他全局设置字段
Après l'avoir défini, dans le système de gestion en arrière-plan, nous ne pouvons créer et modifier qu'une seule instance GlobalSettings.
- Comment ajouter un middleware personnalisé au système de gestion backend
Dans le framework Django, le middleware est un intercepteur utilisé pour gérer les requêtes et les réponses. Il peut gérer la demande ou la réponse avant que la demande n'atteigne la fonction d'affichage, après que la fonction d'affichage ait traité la demande et avant que la réponse ne soit envoyée au client. Parmi eux, l'ajout d'un middleware personnalisé au système de gestion en arrière-plan nous permet d'intercepter et de traiter facilement les opérations de l'administrateur.
Par exemple, si nous souhaitons que l'administrateur doive saisir un mot de passe de confirmation secondaire lors de certaines opérations de modification, nous pouvons ajouter le code suivant au fichier settings.py du projet Django :
MIDDLEWARE = [ # 默认的中间件 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', # 自定义中间件 'myapp.middleware.ConfirmPasswordMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] CONFIRMED_ACTIONS = ( 'myapp.views.EditProductView', 'myapp.views.DeleteProductView', ) class ConfirmPasswordMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): # 根据请求的URL判断是哪个视图函数,如果是CONFIRMED_ACTIONS中的视图函数,需要做二次确认 view_func = resolve(request.path_info).func if view_func and view_func.__module__ + "." + view_func.__name__ in CONFIRMED_ACTIONS: if not request.session.get('password_confirmed', False): # 没有输入二次确认密码,跳转到输入页面 return redirect(reverse('confirm-password')) response = self.get_response(request) return response
Dans le code ci-dessus, nous définissez un ConfirmPasswordMiddleware, il interceptera la demande avant qu'elle n'atteigne la fonction d'affichage et déterminera si un deuxième mot de passe de confirmation est requis. CONFIRMED_ACTIONS est une liste de fonctions d'affichage qui nécessitent une confirmation secondaire. Nous pouvons les ajouter ou les supprimer selon nos besoins. Dans la fonction d'affichage, nous pouvons demander si l'utilisateur actuel a saisi le mot de passe de confirmation secondaire via request.session.get('password_confirmed', False).
- Comment ajouter un sérialiseur au Modèle du système de gestion backend
Dans le framework Django, Serializer est une classe utilisée pour convertir le Modèle en dictionnaire ou au format JSON. L'ajout d'un sérialiseur au système de gestion backend nous permet de convertir facilement le modèle au format JSON et de le sortir.
Par exemple, nous avons un modèle de produit et souhaitons le convertir au format JSON et le sortir dans le système de gestion en arrière-plan. Il peut être défini comme ceci :
from django.contrib import admin from django.core.serializers import serialize from django.http import HttpResponse class ProductAdmin(admin.ModelAdmin): # 列表视图显示的字段列表 list_display = ('name', 'price', 'category') # 自定义action函数 def export_as_json(self, request, queryset): response = HttpResponse(content_type="application/json") serializers.serialize("json", queryset, stream=response) return response export_as_json.short_description = "导出为JSON" # 自定义函数按钮 change_list_template = 'admin/myapp/product/list.html' def get_urls(self): urls = super().get_urls() my_urls = [ path('my_view/', self.my_view), ] return my_urls + urls def my_view(self, request): data = serialize('json', Product.objects.all()) return JsonResponse(data, safe=False) admin.site.register(Product, ProductAdmin)
Dans le code ci-dessus, nous avons ajouté une fonction export_as_json à ProductAdmin, qui peut L'instance de modèle actuellement sélectionnée est convertie au format JSON et envoyée au client. Dans le même temps, nous avons également ajouté une fonction my_view à ProductAdmin, qui peut directement interroger toutes les instances de modèle et les convertir en sortie au format JSON.
Résumé
Le système de gestion d'arrière-plan du framework Django est un outil important pour le développement d'applications Web. Il fournit de nombreuses fonctions prêtes à l'emploi qui nous permettent de gérer facilement les instances de modèle, les modifications et les suppressions par lots. Dans cet article, nous présentons quelques conseils pratiques pour le système de gestion back-end du framework Django, notamment comment gérer la valeur par défaut de ForeignKey dans le modèle, comment limiter un modèle dans le système de gestion back-end pour ne créer qu'une seule instance et comment ajouter personnalisation du système de gestion backend. Définir le middleware et comment ajouter des sérialiseurs au modèle du système de gestion backend. Grâce à l'utilisation de ces techniques, nous pouvons mieux utiliser le système de gestion d'arrière-plan du framework Django.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Partage de conseils Win11 : une astuce pour éviter la connexion au compte Microsoft Windows 11 est le dernier système d'exploitation lancé par Microsoft, avec un nouveau style de conception et de nombreuses fonctions pratiques. Cependant, pour certains utilisateurs, devoir se connecter à leur compte Microsoft à chaque démarrage du système peut être un peu ennuyeux. Si vous en faites partie, autant essayer les conseils suivants, qui vous permettront d'éviter de vous connecter avec un compte Microsoft et d'accéder directement à l'interface de bureau. Tout d’abord, nous devons créer un compte local dans le système pour nous connecter au lieu d’un compte Microsoft. L'avantage de faire cela est

En langage C, il représente un pointeur qui stocke l'adresse d'autres variables ; & représente l'opérateur d'adresse, qui renvoie l'adresse mémoire d'une variable. Les conseils pour l'utilisation des pointeurs incluent la définition des pointeurs, le déréférencement des pointeurs et la garantie que les pointeurs pointent vers des adresses valides. Les conseils pour l'utilisation des opérateurs d'adresse incluent l'obtention d'adresses variables et le retour de l'adresse du premier élément du tableau lors de l'obtention de l'adresse d'un élément du tableau ; . Un exemple pratique démontrant l'utilisation d'opérateurs de pointeur et d'adresse pour inverser une chaîne.

Nous créons et éditons souvent des tableaux dans Excel, mais en tant que novice qui vient d'entrer en contact avec le logiciel, comment utiliser Excel pour créer des tableaux n'est pas aussi simple que pour nous. Ci-dessous, nous réaliserons quelques exercices sur certaines étapes de création de tables que les novices, c'est-à-dire les débutants, doivent maîtriser. Nous espérons que cela sera utile à ceux qui en ont besoin. Un exemple de formulaire pour les débutants est présenté ci-dessous : voyons comment le remplir ! 1. Il existe deux méthodes pour créer un nouveau document Excel. Vous pouvez cliquer avec le bouton droit de la souris sur un emplacement vide du fichier [Bureau] - [Nouveau] - [xls]. Vous pouvez également [Démarrer]-[Tous les programmes]-[Microsoft Office]-[Microsoft Excel 20**] 2. Double-cliquez sur notre nouvel ex

VSCode (Visual Studio Code) est un éditeur de code open source développé par Microsoft. Il possède des fonctions puissantes et une prise en charge riche des plug-ins, ce qui en fait l'un des outils préférés des développeurs. Cet article fournira un guide d'introduction aux débutants pour les aider à maîtriser rapidement les compétences d'utilisation de VSCode. Dans cet article, nous présenterons comment installer VSCode, les opérations d'édition de base, les touches de raccourci, l'installation du plug-in, etc., et fournirons aux lecteurs des exemples de code spécifiques. 1. Installez d'abord VSCode, nous avons besoin

Des astuces Win11 révélées : Comment contourner la connexion au compte Microsoft Récemment, Microsoft a lancé un nouveau système d'exploitation Windows11, qui a attiré une large attention. Par rapport aux versions précédentes, Windows 11 a apporté de nombreux nouveaux ajustements en termes de conception d'interface et d'améliorations fonctionnelles, mais il a également suscité une certaine controverse. Le point le plus frappant est qu'il oblige les utilisateurs à se connecter au système avec un compte Microsoft. . Certains utilisateurs sont peut-être plus habitués à se connecter avec un compte local et ne souhaitent pas lier leurs informations personnelles à un compte Microsoft.

Titre : Conseils de programmation PHP : Comment accéder à une page Web en 3 secondes Dans le développement Web, nous rencontrons souvent des situations dans lesquelles nous devons passer automatiquement à une autre page dans un certain laps de temps. Cet article explique comment utiliser PHP pour implémenter des techniques de programmation permettant d'accéder à une page en 3 secondes et fournit des exemples de code spécifiques. Tout d'abord, le principe de base du saut de page est réalisé via le champ Location dans l'en-tête de la réponse HTTP. En définissant ce champ, le navigateur peut accéder automatiquement à la page spécifiée. Vous trouverez ci-dessous un exemple simple montrant comment utiliser P

Les formulaires font partie intégrante de la rédaction d’un site Web ou d’une application. Laravel, en tant que framework PHP populaire, fournit des classes de formulaires riches et puissantes, rendant le traitement des formulaires plus facile et plus efficace. Cet article présentera quelques conseils sur l'utilisation des classes de formulaires Laravel pour vous aider à améliorer l'efficacité du développement. Ce qui suit explique en détail à travers des exemples de code spécifiques. Créer un formulaire Pour créer un formulaire dans Laravel, vous devez d'abord écrire le formulaire HTML correspondant dans la vue. Lorsque vous travaillez avec des formulaires, vous pouvez utiliser Laravel

Dans le développement d’un programme de langage Go, les compétences en reconstruction fonctionnelle sont un élément très important. En optimisant et en refactorisant les fonctions, vous pouvez non seulement améliorer la qualité et la maintenabilité du code, mais également améliorer les performances et la lisibilité du programme. Cet article approfondira les techniques de reconstruction de fonctions dans le langage Go, combinées à des exemples de code spécifiques, pour aider les lecteurs à mieux comprendre et appliquer ces techniques. 1. Exemple de code 1 : Extraire les fragments de code en double. Dans le développement réel, nous rencontrons souvent des fragments de code réutilisés. À l'heure actuelle, nous pouvons envisager d'extraire le code répété en tant que fonction indépendante.
