Déconnexion ordinaire vue HTML. Vues Connectez-vous et déconnectez-vous. Créer la page principale
Vous pouvez même entendre parler des modèles de conception et même retourner ces merveilleux livres:
- E. Gamma, R. Helm, R. Johnson, J. Wlissidess "prend des conceptions orientées objet. Modèles de conception ";
- M. Fowler "Architecture des applications logicielles d'entreprise".
L'article soumis sera utile principalement par novice. En tout état de cause, j'espère que dans quelques heures, vous pouvez avoir une idée de la mise en œuvre du modèle MVC, qui se situe au cœur de tous les cadres Web modernes et obtenez également "la nourriture" pour une réflexion supplémentaire sur le " comment faire". À la fin de l'article, une sélection de liaisons utiles, qui contribueront également à déterminer ce que le cadre Web consiste (en plus de MVC) et à la manière dont ils fonctionnent.
Les programmeurs PHP localisés sont peu susceptibles de trouver quelque chose de nouveau dans cet article pour eux-mêmes, mais leurs commentaires et leurs commentaires au texte principal seraient très à la hauteur! Parce que Sans la théorie, la pratique est impossible et sans pratique la théorie est inutile, elle sera d'abord une petite théorie, puis nous nous tournons vers la pratique. Si vous connaissez déjà le concept MVC, vous pouvez ignorer la section avec la théorie et aller immédiatement à la pratique.
1. Théorie
Le modèle MVC décrit un moyen simple de créer une structure d'application, dont la succursale de la logique commerciale de l'interface utilisateur. En conséquence, l'application est plus facile que la mise à l'échelle, est testée, accompagnée et bien sûr mise en œuvre.Considérons le diagramme de modèle MVC conceptuel (à mon avis - c'est le système le plus réussi de ceux que j'ai vu):
Dans l'architecture MVC, le modèle fournit des règles de données et de logiques commerciales, la présentation est responsable de l'interface utilisateur et du contrôleur fournit une interaction entre le modèle et la représentation.
La séquence d'applications MVC typique peut être décrite comme suit:
- Lorsque l'utilisateur arrive à la ressource Web, le script d'initialisation crée une instance de l'application et le démarre à exécuter.
Cela affiche l'apparence, disons la page principale du site. - L'application reçoit une demande de l'utilisateur et détermine le contrôleur et l'action demandés. Dans le cas de la page principale, l'action par défaut est effectuée ( indice.).
- L'application crée une instance du contrôleur et démarre la méthode d'action,
dans lequel, par exemple, contient des appels de modèle qui lisent les informations de la base de données. - Après cela, l'action génère une présentation avec les données obtenues à partir du modèle et affiche le résultat à l'utilisateur.
Le modèle ne doit pas interagir directement avec l'utilisateur. Toutes les variables liées à la demande de l'utilisateur doivent être traitées dans le contrôleur.
Le modèle ne doit pas générer de code HTML ou un autre code d'affichage pouvant varier en fonction des besoins de l'utilisateur. Ce code devrait être traité à l'espèce.
Le même modèle, par exemple, le modèle d'authentification de l'utilisateur peut être utilisé à la fois dans l'utilisateur et dans la partie administrative de l'application. Dans ce cas, vous pouvez créer un code général dans une classe distincte et hérité de celle-ci, déterminer des méthodes spécifiques à héritiers.
Vue - Utilisé pour spécifier l'affichage externe des données obtenues à partir du contrôleur et du modèle.
Les types contiennent des marquements HTML et de petits inserts de code PHP pour contourner les données, formater et afficher des données.
Ne pas accéder directement à la base de données. Cela devrait faire des modèles.
Ne fonctionnez pas avec des données obtenues à partir de la demande de l'utilisateur. Cette tâche doit être effectuée par le contrôleur.
Il peut accéder directement aux propriétés et aux méthodes du contrôleur ou des modèles pour obtenir des données prêtes à la ligne.
Les types sont généralement séparés par un gabarit commun contenant un balisage, commun à toutes les pages (par exemple, un capuchon et un sous-sol) et une partie du modèle utilisé pour afficher les données de la sortie du modèle ou l'affichage des formulaires de saisie de données.
Manette - Lien de liant connectant des modèles, des types et d'autres composants de l'application de travail. Le contrôleur est responsable de la gestion des demandes des utilisateurs. Le contrôleur ne doit pas contenir de requêtes SQL. Il vaut mieux les garder dans des modèles. Le contrôleur ne doit pas contenir HTML et autre balisage. Cela vaut la peine d'espoir.
Dans une application MVC bien conçue, les contrôleurs sont généralement très minces et ne contiennent que quelques douzaines de lignes de code. Quoi, vous ne pouvez pas parler de contrôleurs de graisse stupides (SFC) dans CMS Joomla. La logique du contrôleur est assez typique et sa grande partie est faite dans les classes de base.
Modèles, au contraire, très épais et contiennent la majeure partie du code associé au traitement des données, car La structure de données et la logique commerciale contenues dans elles sont généralement assez spécifiques à une application spécifique.
1.1. Contrôleur avant et contrôleur de page
Dans la plupart des cas, l'interaction de l'utilisateur avec l'application Web passe dans les liens par référence. Regardez maintenant la barre d'adresse du navigateur - sur ce lien que vous avez reçu ce texte. Pour d'autres liens, par exemple, situé à droite sur cette page, vous recevrez d'autres contenus. Ainsi, le lien représente une commande d'application Web spécifique.J'espère que vous avez déjà remarqué que différents sites peuvent être des formats différents différents pour la construction d'une chaîne d'adresse. Chaque format peut afficher l'architecture d'applications Web. Bien que ce ne soit pas toujours le cas, mais dans la plupart des cas, c'est un fait évident.
Considérez deux options pour la barre d'adresse, qui affiche du texte et du profil utilisateur.
Première option:
- www.example.com/article.php?id\u003d3
- www.example.com/user.php?id\u003d4.
Deuxième option:
- www.example.com/index.php?article\u003d3
- www.example.com/index.php?user\u003d4.
Approchez avec de nombreux points d'interaction que vous pouvez regarder sur les forums avec le moteur PhPBB. Voir le forum survient via le script viewforum.php., vue sur le sujet à travers vieftopic.php. etc. La deuxième approche, avec accès à travers un fichier de script physique, peut être observée dans mon MODX de CMS préféré, où tous les appels passent à travers index.php..
Ces deux approches sont complètement différentes. La première est caractéristique du modèle de contrôleur de page (contrôleur de page) et la deuxième approche est implémentée par le motif du contrôleur de requête (contrôleur avant). Le contrôleur de page est bien utilisé pour les sites avec une logique assez simple. À son tour, le contrôleur de demande combine toutes les actions visant à traiter les demandes dans un seul endroit, ce qui lui donne des fonctionnalités supplémentaires, grâce auxquelles vous pouvez mettre en œuvre des tâches plus difficiles que généralement résolues par le contrôleur de page. Je n'entrerai pas dans les détails de la mise en œuvre du contrôleur de page et je ne dirai que le contrôleur de requête sera développé dans la partie pratique (une similitude).
1.2. Routage de l'URL
Le routage de l'URL vous permet de configurer la demande de réception de demandes à l'URL qui ne répondent pas aux fichiers d'application réels, ainsi que d'utiliser des CNC qui sont sémantiquement significatifs pour les utilisateurs et sont préférés pour l'optimisation des moteurs de recherche.Par exemple, pour la page habituelle qui affiche le formulaire de commentaires, l'URL pourrait ressembler à ceci:
http://www.example.com/contacts.php?Action\u003dFeedback
Code de traitement approximatif dans ce cas:
interrupteur ($ _GET ["action"] (cas "À propos": Exiger_once ("About.php"); // page "À propos de nous" Se rompre; Cas "Contacts": requis_once ("Contacts.php"); // page "Contacts" Se rompre; Cas "Feedback": Exiger_once ("feedback.php"); // page "Feedback" Se rompre; Valeur par défaut: requis_once ("page 404.php"); // page "404" pause; )
Je pense que presque tout le monde l'a fait.
À l'aide du moteur de routage URL, vous pouvez configurer l'application pour la réception de telles demandes dans les mêmes informations:
http://www.example.com/contacts/feedback
Ici, les contacts sont un contrôleur et les commentaires sont la méthode des contacts du contrôleur qui représente la forme de rétroaction, etc. Nous reviendrons sur cette question dans la partie pratique.
Il convient également de savoir que de nombreux routeurs-cadres Web vous permettent de créer des itinéraires d'URL arbitraires (spécifiez la partie de chaque partie de l'URL) et les règles de leur traitement.
Maintenant, nous avons des connaissances théoriques suffisantes pour aller à la pratique.
2. pratique
Pour commencer, créez la structure de fichier et les dossiers suivants:En ce qui concerne l'avenir, je dirai que le dossier principal stockera le modèle de classe de base, la vue et le contrôleur.
Leurs descendants seront stockés dans les administrateurs des contrôleurs, des modèles et des vues. Déposer index.php. C'est un point au cours de la demande. Déposer bootstrap.php. Lance le téléchargement de l'application en connectant tous les modules nécessaires, etc.
Nous irons séquentiellement; Ouvrez le fichier index.php et remplissez-le avec le code suivant:
INI_SET ("DISPLAY_ERRORS", 1); Exiger_once "application / bootstrap.php";
Il ne devrait y avoir aucune question ici.
Ensuite, nous passons immédiatement à Falu bootstrap.php.:
exiger_once "noyau / modèle.php"; Exiger_once "noyau / vue.php"; Exiger_once "core / contrôleur.php"; Exiger_once "noyau / route.php"; Route :: Démarrer (); // exécuter le routeur
Les trois premières lignes seront connectées jusqu'à présent les fichiers de noyau inexistants. Les dernières lignes se branchent dans le fichier avec la classe de routeur et exécutez-la pour appeler la méthode START START.
2.1. Mise en œuvre du routeur URL
Jusqu'à présent, je vais rejetterai de la mise en œuvre du modèle MVC et prendra la mrachrutisation. Le premier sh est que nous devons faire, écrivez le code suivant dans .htaccess.:RewriteEngine sur RewriteCond% (request_filename)! -F réécritecond% (demande_filename)! -D Rewriterule. * Index.php [l]
Ce code redirigera le traitement de toutes les pages sur index.php.Ce dont nous avons besoin. Rappelez-vous dans la première partie. Nous avons parlé du contrôleur frontal ?!
Routing Nous serons placés dans un fichier séparé route.php. Dans le répertoire principal. Dans ce fichier, nous décrivons la classe d'itinéraire, qui exécutera les méthodes de contrôleurs, ce qui générera à son tour une vue de pages.
Le contenu du fichier route.php
route de classe ( Statique. démarrage de la fonction () ( // Contrôleur et action par défaut $ Contrôleur_name \u003d "Main"; $ Acte_name \u003d "index"; $ Itinéraires \u003d exploser ("/", $ _server ["demande_uri"]); // Obtenir le nom du contrôleur Si (! Vide ($ itinéraires)) ($ contrôleur_name \u003d $ itinéraires;) // Obtenir le nom de l'action Si (! vide ($ itinéraires)) ($ Action_Name \u003d $ itinéraires;) // Ajouter des préfixes $ modèle_name \u003d "Model_". $ contrôleur_name; $ Contrôleur_name \u003d "contrôleur_". $ Contrôleur_name; $ Acte_name \u003d "action_". $ Acte_name; // pochette le fichier avec la classe de classe (le fichier modèle peut ne pas être) $ modèle_file \u003d strtoolower ($ Model_Name). "PHP"; $ Modèle_path \u003d "Application / Modèles /". $ Model_file; Si (File_Exists ($ Model_Path)) (inclure "Application / Modèles /". $ Model_file;) // pochette le fichier avec la classe du contrôleur $ Contrôleur_file \u003d strtoolower ($ contrôleur_name). "PHP"; $ Contrôleur_path \u003d "applications / contrôleurs /". $ Contrôleur_file; Si (fichier_exists ($ contrôleur_path)) (inclure "Application / contrôleurs /". $ contrôleur_file;) d'autre ( / * Il serait correct de jeter une exception ici, mais de simplifier immédiatement faire une redirection à la page 404 * / Route :: errorpage404 (); ) // Créer un contrôleur Contrôleur $ \u003d nouveau $ contrôleur_name; $ Action \u003d $ acte_name; Si (méthody_exists ($ contrôleur, $ action)) ( // appeler le contrôleur $ Contrôleur -\u003e $ Action (); ) AUTRE ( // aussi il serait plus sage de jeter une exception Route :: errorpage404 (); ))) error de fonctionPage404 () ( $ hôte \u003d "http: //". $ _ serveur ["http_host"]. "/"; En-tête ("http / 1.1 404 non trouvé"); Tête ("Statut: 404 non trouvé"); Tête ("Emplacement:". $ Hôte. "404"); )))
Je note qu'une logique très simplifiée est mise en œuvre dans la classe (malgré le code surround) et peut même avoir des problèmes de sécurité. C'était fait l'intention, parce que Écrire une classe de routage à part entière mérite au moins un article séparé. Considérez les points principaux ...
Dans l'élément de tableau global $ _Server ["request_uri"] contient l'adresse complète de laquelle l'utilisateur adressé.
Par exemple: exemple.ru/contacts/feedback
En utilisant une fonction exploser. La séparation des adresses est faite. En conséquence, nous obtenons le nom du contrôleur pour l'exemple ci-dessus, il s'agit d'un contrôleur. contacts. et le nom de l'action, dans notre cas - retour.
Ensuite, le fichier de modèle est connecté (le modèle peut être manquant) et le fichier de contrôleur, le cas échéant, s'il est créé, une instance du contrôleur est créée et une action est appelée à nouveau si elle a été décrite dans la classe du contrôleur. .
Ainsi, lors de la commutation, par exemple, à:
exemple.com/portfolio.
ou alors
exemple.com/portfolio/index
le routeur effectue ce qui suit:
- connectez le fichier modèle_portfolidio.php dans le dossier Modèles contenant la classe Model_Port Folio;
- connectez le fichier contrôleur_portfolidio.php dans le dossier Contrôleurs comprenant la classe Controller_Portfolio;
- créez une instance de la classe Controller_Portfolio et provoque l'action par défaut - action_index décrite dans celle-ci.
exemple.com/ufo.
cela le transférera à la page "404":
exemple.com/404.
La même chose se produit si l'utilisateur passe à l'action qui n'est pas décrit dans le contrôleur.
2.2. Retour à la mise en œuvre de MVC
Nous nous tournons vers le dossier principal et ajoutons trois autres fichiers au fichier itinéraire.php: modèle.php, vue.php et contrôleur.phpPermettez-moi de vous rappeler qu'ils contiendront des cours de base, dont nous allons commencer par écrit.
Contenu du fichier modèle.php.
modèle de classe ( Publique fonction get_data () (
}
}
La classe de classe contient la seule méthode d'échantillonnage de données vide qui se chevauchera dans les classes des descendants. Lorsque nous créons des cours de descendants, tout deviendra plus clair.
Contenu du fichier voir.php.
vue de la classe (
// publique $ template_view; // Ici, vous pouvez spécifier une vue générale de la valeur par défaut.
fonction générer ( $ Content_view, $ template_view, $ data \u003d null)
{
/ * Si (is_array ($ données)) (// Nous transformons les éléments du tableau dans les variables d'extrait ($ données);) * / Inclure "application / vues /". $ Template_view; )))
Il n'est pas difficile de deviner que la méthode produire Conçu pour former un type. Les paramètres suivants sont transmis à celui-ci:
- $ Content_file - types de contenus de page reflétant;
- $ template_file - Modèle commun pour toutes les pages;
- $ Data - Un tableau contenant des éléments de contenu de page. Généralement rempli dans le modèle.
pour afficher un contenu de page spécifique.
Dans notre cas, le modèle général contiendra l'en-tête, le menu, la barre latérale et le pied de page, et le contenu de la page sera contenu dans un formulaire séparé. Encore une fois, cela est fait pour simplifier.
Contenu du fichier contrôleur.php.
contrôleur de classe ( Public $ modèle; Public $ vue; fonction __Construction () ( $ ceci -\u003e vue \u003d nouvelle vue (); ))))
Méthode action_index. - Il s'agit de l'action causée par défaut, nous allons le bloquer lors de la mise en œuvre des classes des descendants.
2.3. Mise en œuvre des classes de descendants de modèle et de contrôleur, créant une vue »
Maintenant, le plus intéressant commence! Notre site Web de site Web comprendra les pages suivantes:- le principal
- Prestations de service
- Portefeuille
- Contacts
- Ainsi que - page "404"
Le fichier sélectionné séparément sur la figure précédente. template_view.php. - Ceci est un modèle contenant le balisage général de toutes les pages. Dans le cas le plus simple, il pourrait ressembler à ceci:
<hTML LANG \u003d "ru"\u003e
<tête\u003e
<meta Charset \u003d "UTF- 8"\u003e <titre\u003ele principaltitre\u003e
tête\u003e
<corps\u003e
$ Content_view; ?\u003e corps\u003e
hTML\u003e
Pour donner au site de la vue présentable, le modèle CSS se chevauche et l'intégrant dans notre site en modifiant la structure de balisage HTML et en connectant les fichiers CSS et JavaScript:
<lien rel \u003d "stylesheet" type \u003d "text / css" href \u003d "/ css / style.css" /\u003e
<script SRC \u003d "/ JS / JQuery-1.6.2..2.js" Type \u003d "Texte / JavaScript"\u003escript\u003e
À la fin de l'article, dans la section «Résultat», une référence au référentiel GitHub avec le projet, qui a été effectuée pour intégrer un modèle simple.
2.3.1. Créer la page principale
Commençons par le contrôleur contrôleur_main.php., Voici son code:classe Controller_Main étend le contrôleur ( fonction Action_Index () ( $ ceci -\u003e Affichage-\u003e Générez ("Main_View.PHP", "TEMPATE_VIEW.PHP"); )))
Dans la méthode produire Une instance de la classe d'affichage est transmise par les noms des fichiers de modèle communs et le type de contenu de page.
En plus de l'indice du contrôleur, bien sûr, d'autres actions peuvent être contenues.
Le fichier avec une vue commune nous avons considérée plus tôt. Considérez le fichier de contenu main_View.php.:
<h1\u003eBienvenue!h1\u003e
<p\u003e
<img src \u003d "/ images / bureau-petit.jpg" align \u003d "gauche"\u003e
<un href \u003d "/"\u003eÉquipe Ololosh.a\u003e - Équipe de spécialistes de première classe dans le développement de sites Web avec de nombreuses années d'expérience en collectant des masques mexicains, des statues en bronze et de pierre d'Inde et de Ceylan, des bas-reliefs et des sculptures créées par les maîtres de l'Afrique équatoriale il y a cinq à six siècles .. .p\u003e
Il contient un simple balisage sans appels PHP.
Pour afficher la page principale, vous pouvez utiliser dans l'une des adresses suivantes:
- méthodes de bibliothèques mettant en œuvre des données d'abstraction. Par exemple, les méthodes de la bibliothèque PEAR MDB2;
- méthodes ORM;
- méthodes de travail avec NOSQL;
- et etc. Pour la simplicité, ici, nous n'utiliserons pas les demandes SQL ou les opérateurs ORM. Au lieu de cela, nous saisissons des données réelles et remboursons immédiatement la matrice résultante.
- Contrôleur_login dans lequel un formulaire avec un formulaire pour entrer dans un identifiant et un mot de passe est généré, après avoir rempli la procédure d'authentification et, le cas échéant, l'utilisateur est redirigé vers l'administrateur.
- Contorler_Admin avec une action indexée, dans laquelle il est coché si l'utilisateur a déjà été autorisé sur le site en tant qu'administrateur (le cas échéant, le type d'administrateur est affiché) et la déconnexion d'exercice pour le chauffage.
- spring-Security-Web 4.2.3.Release: Spring-Security-Web.
- spring-Security-config 4.2.3.Release: Spring-Security-config.
- spring WebMVC 4.3.9.Release: Web Spring Web MVC.
- javax.Servlet-API 3.1.0 API de servlet Java
- JDK 1.8.
- Maven 3.3.9
- Login_redirect_url: Rapporte quelle URL rediriger l'utilisateur après la connexion au système.
- Login_url : URL pour rediriger l'utilisateur à l'entrée (par exemple, à l'aide du décorateur connexion requise.)
- Logout_url : URL pour la redirection de l'utilisateur
- Pour mettre en surbrillance la section actuelle dans le menu à l'aide de CSS. Affiche également le nom d'utilisateur et le lien pour vous connecter si l'utilisateur a réussi l'authentification ou le lien pour vous connecter.
Ouvert dans le navigateur http://127.0.0.1:8000/account/login/. Vous devez voir le flux d'entrée. Entrez le login et le mot de passe valides. Vous verrez ce qui suit:
Vous pouvez voir que la section de mon tableau de bord est mise en surbrillance avec CSS, car elle a une classe choisi.. Étant donné que l'utilisateur a passé l'authentification, le nom d'utilisateur est affiché sur le côté droit de l'en-tête. Cliquez sur lien Se déconnecter.. Vous verrez la page suivante:
Sur cette page, vous pouvez voir que l'utilisateur est sorti du système et, par conséquent, le menu du site Web n'est plus affiché. Lien sur le côté droit des spectacles de Heder maintenant Connexion.
Si vous voyez la page de déconnexion du site d'administration Dzhango et non de votre propre page de sortie système, cochez les paramètres installés_apps et assurez-vous que django.contrib.admin. est après compte. Les deux modèles sont dans le même chemin relatif et le chargeur du modèle Dzhango utilisera la première trouvée.
Django est livré avec beaucoup de ressources intégrées pour les cas d'utilisation les plus courants d'une application Web. L'application d'enregistrement est un très bon exemple et une bonne chose à ce sujet est que les fonctionnalités peuvent être utilisées hors de la boîte.
Avec l'application d'enregistrement Django, vous pouvez prendre des avantages des fonctionnalités suivantes suivantes:
- Connexion.
- Se déconnecter.
- S'inscrire.
- Réinitialisation du mot de passe.
Dans ce tutoriel, nous nous concentrerons sur les fonctionnalités de connexion et de déconnexion. Pour la réinitialisation des inscriptions et du mot de passe, vérifiez les tutoriels ci-dessous:
Commencer.
Avant de commencer, assurez-vous que dans votre installation installée et l'authentification Middlelled_apps et le middleware d'authentification correctement configuré dans les paramètres Middleware_Classes.
Les deux arrivent déjà configurés lorsque vous démarrez un nouveau projet Django à l'aide de la commande StartProject. Donc, si vous n'avez pas supprimé les configurations initiales, vous devriez être installée.
Si vous démarrez un nouveau projet Juste pour suivre ce tutoriel, créez un utilisateur à l'aide de la ligne de commande, afin que nous puissions tester les pages de connexion et de déconnexion.
$ Python gérer.py crééeuperuserÀ la fin de cet article, je fournirai le code source de l'exemple avec la configuration minimale.
Configurer les itinéraires d'URL
Premièrement importer le module django.contrib.auth.views et ajoutez une route d'URL pour connaître les vues de connexion et de déconnexion:
de django.conf.urls Import URL à partir de django.contribe importer admin à partir de django.contrib.auth importer des vues comme auth_views urlpattats \u003d [URL (R "^ Connexion / $", auth_views. Login, nom \u003d "Connexion"), URL ( R "^ déconnexion / $", auth_views. Déconnexion, nom \u003d "Déconnexion"), URL (R "^ admin /", admin. Site. URL),]Créer un modèle de connexion
Par défaut, la vue Django.Contrib.ATth.Views.Login tente de rendre le modèle d'enregistrement / login.html. Donc, la configuration de base créerait un dossier nommé registre et placerait un gabarit login.html à l'intérieur.
Après un modèle de connexion minimal:
(% Étend "BASE.HTML"%) (% Titre du bloc%%) Connexion (% EndBlock%) (% Bloquer le contenu%)
Connexion.
(% ENDBLOCK%)Cet exemple simple valide déjà le nom d'utilisateur et le mot de passe et authentifier correctement l'utilisateur.
Personnalisation de la vue de connexion
Vous pouvez passer quelques paramètres à la vue de connexion pour le faire correspondre à votre projet. Par exemple, si vous souhaitez stocker votre modèle de connexion ailleurs que ce qui peut passer le nom du modèle en tant que paramètre:
URL (R "^ Connexion / $", auth_views. Connexion, ("Template_name": "CORE / LOGIN.HTML"), NOM \u003d "Connexion"),Vous pouvez également passer un formulaire d'authentification personnalisé à l'aide du paramètre authentification_form, en cas de mise en œuvre d'un modèle utilisateur personnalisé.
Maintenant, une configuration très importante est effectuée dans le fichier Paramètres.py, qui est l'URL Django redirigera l'utilisateur après une authentification réussie.
Dans le fichier Paramètres.py Ajouter:
Login_redirect_url \u003d "home"La valeur peut être une URL codée ou un nom d'URL. La valeur par défaut pour login_redirect_url est / comptes / profil /.
Il est également important de noter que Django tentera de rediriger l'utilisateur au prochain Get Param.
Configuration de la vue de déconnexion
Après avoir suivi la vue Django.Contrib.Auth.Views.Logout, Django rendra le modèle d'enregistrement / logbed_out.html. De la même manière que nous avons fait dans la vue de connexion, vous pouvez passer un modèle différent, comme si:
URL (R "^ déconnections / $", auth_views. Déconnexion, ("template_name": "logbed_out.html"), nom \u003d "Déconnexion"),Habituellement, je préfère utiliser le paramètre Next_Page et rediriger soit à la page d'accueil de mon projet, soit à la page de connexion quand il est logique.
Fichier de modèle modèle_portfolidio.php. Position dans le dossier Modèles de modèles. Voici son contenu:
classe modèle_portfolio étend le modèle ( Publique fonction get_data () ( Array de retour (tableau ("Année" \u003d\u003e "2012", "Site" \u003d\u003e "http://dunkelbeer.ru", "Description" \u003d\u003e "Le site Dunkel Dark Beer Promotion du producteur allemand Löwenbraü a produit dans la brassage de la Russie" Can Ibev "."), Array ("Année" \u003d\u003e "2012", "Site" \u003d\u003e "http://zopomobile.ru", "Description" \u003d\u003e "Catalogue russe des téléphones chinois de ZOPO sur la base d'un système d'exploitation Android et des accessoires."), // FAIRE); )))
La classe de contrôleur de modèle est contenue dans le fichier. contrôleur_portfolio.php., Voici son code:
classe Controller_Portfolio étend le contrôleur (
fonction __Construction () ( $ ceci -\u003e modèle \u003d nouveau modèle_portfolio (); $ ceci -\u003e vue \u003d nouvelle vue (); ) fonction Action_Index () ( $ Données \u003d ceci -\u003e modèle-\u003e get_data (); $ ceci -\u003e Affichage-\u003e Générer ("Portfolio_View.PHP", "TEMPATE_VIEW.PHP", $ données); )))
Dans une variable données. Le tableau renvoyé par la méthode est enregistré get_data.que nous avons considéré plus tôt.
Ensuite, cette variable est transmise en tant que paramètre de méthode. produireCe qui est également transmis: le nom du fichier avec un modèle commun et un nom de fichier contenant une vue du contenu des pages.
Afficher contenant le contenu de la page est dans le fichier portfolio_view.php..
Portefeuille
An | Projet | La description | . "$ Ligne [" année "]." | "$ Ligne [" site "]." | . "$ Ligne [" Description "]." | " ; }