


Python utilise Django pour développer son propre système de blog
Feb 25, 2017 am 11:17 AM Je voulais créer mon propre système de blog depuis longtemps, mais après avoir cherché sur Internet, il semble que cela nécessite des connaissances sur Node.js et l'installation de nombreuses bibliothèques, etc., donc je ne veux pas pour le toucher. Mais j'ai rencontré un artefact comme Django, et je ne m'attendais pas à ce que mon système de blog soit établi comme ?a. Bien que ce soit le type le plus basique. Mais cela peut être considéré comme une réussite. Ce blog est plus adapté aux enfants qui ont une certaine compréhension de Django. Si vous êtes novice, il est recommandé de jeter un ?il aux connaissances de base de Django avant de faire des expériences, qui seront. plus efficace !
Bien, sans plus tarder, commen?ons.
Construire un framework
?Créer des projets et des applications
Construire un framework signifie installer Django et faire le Bien configuration pertinente. Parce que je l'ai créé sous PyCharm, les outils ont fait beaucoup de choses pour moi. Mais la couche inférieure n'est rien de plus que les lignes de code suivantes?:
Créez un projet Django nommé MyDjango
django-admin startproject MyDjango
Créez une application Django nommée MyBlog. Il convient de noter ici que la candidature appartient à un sous-ensemble du projet. En termes simples, les dossiers d'application existent en tant que sous-ensemble des dossiers de projet.
django-admin startapp MyBlog
?Créer une base de données et un modèle sous-jacent
J'utilise simplement la base de données sqlite3 par défaut comme base de données de mon système de blog. Bien s?r, vous pouvez également personnaliser la base de données dont vous avez besoin. De manière générale, sqlite3 peut répondre aux besoins. Vous pouvez le configurer comme ceci dans settings.py.
# Database # https://docs.djangoproject.com/en/1.9/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'MyBlog.db', 'USER':'', 'PASSWORD':'', 'HOST':'', 'PORT':'', } }
Une fois la base de données construite, l'étape suivante consiste à créer le modèle. Parce que je crée un système de blog, il est essentiel de publier du contenu sur le blog, j'ai donc besoin d'attributs tels que le titre, le contenu et l'heure de publication. Des détails tels que le fichier models.py
?. >from __future__ import unicode_literals from django.contrib import admin from django.db import models # create the blog model class BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() def __unicode__(self): return self.title
# set the admin page for BlogPost class BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp') # register the model (especially important admin.site.register(BlogPost)
from __future__ import unicode_literals from django.contrib import admin from django.db import models # create the blog model class BlogPost(models.Model): title = models.CharField(max_length=150) body = models.TextField() timestamp = models.DateTimeField() def __unicode__(self): return self.title # set the admin page for BlogPost class BlogPostAdmin(admin.ModelAdmin): list_display = ('title','timestamp') # register the model (especially important admin.site.register(BlogPost)L'étape suivante consiste à synchroniser la connexion entre la base de données et le modèle. Si vous n'effectuez pas d'opérations de synchronisation, il est très probable que
django.db.utils.OperationalError: impossible d'ouvrir le fichier de base de données
sera signalé, et c'est aussi un lien très important. C'est le problème avec la version Django que j'ai déjà rencontré.
django < 1.7?: python manage.py syncdb
django > > python manage.py makemigrations python manage.py migrate
En fait, par rapport au précédent étapes, nous avons terminé les fonctions du module de modèle et l'étape suivante consiste à cartographier les vues.
?Couche de vue V (views.py) Nous devons définir le traitement logique sous-jacent dans ce fichier. Cela détermine le type de réponse renvoyée à l'utilisateur. Quant à la méthode de rendu à utiliser, ne perdez pas de temps inutile là-dessus. render_to_response suffit.
# create the view for blog show def myBlogs(request): blog_list = BlogPost.objects.all() return render_to_response('BlogTemplate.html',{'blog_list':blog_list})
Un fichier modèle est utilisé ici et un paramètre de type de liste est transmis au modèle, dont nous discuterons plus tard.
?C(controller)urls.pyOn peut dire que ce fichier connecte ensemble les fonctions faiblement couplées de diverses parties de Django , et c'est terminé. Le c?ur non essentiel du fonctionnement de l'ensemble du projet est le traitement de la logique de mappage. Ensuite, nous allons configurer notre système de blog.
from django.conf.urls import url from django.contrib import admin from MyBlog.views import * urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^myBlogs/$',myBlogs), ]
Concernant la fa?on de mapper, mon dernier article a une introduction détaillée, PyCharm développe la configuration de base de Django. Ceux qui sont intéressés peuvent s'y référer. D'accord, cette fois, après avoir terminé les paramètres de l'utilisateur administrateur, nous pouvons exécuter notre programme.
python manage.py runserver
appara?t :
Performing system checks... System check identified no issues (0 silenced). June 05, 2016 - 11:39:27 Django version 1.9.6, using settings 'MyDjango.settings' Starting development server at http://m.miracleart.cn/:8000/ Quit the server with CTRL-BREAK.
Vous pouvez ensuite le saisir dans le navigateur
http://127.0.0.1:8000/admin Une fois connecté, vous pouvez cliquer sur Articles de blog ci-dessous pour modifier les articles de blog. Cliquez ensuite sur le bouton ENREGISTRER pour publier notre blog. Ensuite, entrezhttp://127.0.0.1:8000/myBlogs/ dans le navigateur pour accéder à notre système de blog.
Cela complète la mise en place de notre système de blog. Mais comme aucun style n’est ajouté, cela n’a pas l’air très bien, nous allons donc ajouter les styles de modèle suivants.
接著剛才的繼續(xù),關(guān)于模板,這里面可謂是有著很深的設(shè)計(jì)哲學(xué)。了解過的大家肯定都會有感觸,我就不多說了。 ?然后就是子模板BlogTemplate.html 需要注意的就是模板中的模板標(biāo)簽以及模板變量都應(yīng)該與views.py文件對應(yīng)的函數(shù)中的字典變量相一致,否則django雖然不會報錯,但也是不會顯示數(shù)據(jù)的。? 接下來刷新一下,輸入http://127.0.0.1:8000/admin/ 點(diǎn)擊add按鈕,開始添加你的博文吧。 然后在瀏覽器中輸入 大家可能已經(jīng)看到了,問題就出在點(diǎn)擊標(biāo)題沒有進(jìn)入到相關(guān)的詳情頁面,那是因?yàn)檫€沒有添加這個功能呢。(^__^) 嘻嘻…… 總結(jié) 今天一起做了一個簡單的博客系統(tǒng),雖然外觀看起來并不是很好看,但是內(nèi)容什么的差不多就是這樣了。還有很多的地方需要完善。 以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持PHP中文網(wǎng)。 更多Python utilise Django pour développer son propre système de blog相關(guān)文章請關(guān)注PHP中文網(wǎng)!
接下來就為我們的博客系統(tǒng)設(shè)置一下模板吧。
?父模板base.html
按照django對模板的繼承設(shè)置,我們可以制作一個父模板。如下:<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>標(biāo)題</title>
</head>
<style type="text/css">
body{
color: #efd;
background: #BBBBBB;
padding: 12px 5em;
margin:7px;
}
h1{
padding: 2em;
background: #675;
}
h2{
color: #85F2F2;
border-top: 1px dotted #fff;
margin-top:2em;
}
p{
margin:1em 0;
}
</style>
<body>
<h1>XX博文</h1>
<h3>小生不才,但求簡約!</h3>
{% block content %}
{% endblock %}
</body>
</html>
{% extends "base.html" %}
{% block content %}
{% for post in blog_list %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
{% endfor %}
{% endblock %}
http://m.miracleart.cn/:8000/myBlogs/
.你就可以看到你的博客列表了,如圖

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

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)

Utilisez le plot conjoint de Seaborn pour visualiser rapidement la relation et la distribution entre deux variables; 2. Le tracé de diffusion de base est implémenté par sn.jointplot (data = pointes, x = "total_bill", y = "Tip", kind = "dispers"), le centre est un tracé de dispersion et l'histogramme est affiché sur les c?tés supérieur et inférieur et droit; 3. Ajouter des lignes de régression et des informations de densité à un kind = "reg" et combiner marginal_kws pour définir le style de tracé de bord; 4. Lorsque le volume de données est important, il est recommandé d'utiliser "Hex"

Les listes de cha?nes peuvent être fusionnées avec la méthode join (), telles que '' .join (mots) pour obtenir "HelloworldFrompython"; 2. Les listes de nombres doivent être converties en cha?nes avec MAP (STR, nombres) ou [STR (x) Forxinnumbers] avant de rejoindre; 3. Toute liste de types peut être directement convertie en cha?nes avec des supports et des devis, adaptées au débogage; 4. Les formats personnalisés peuvent être implémentés par des expressions de générateur combinées avec join (), telles que '|' .join (f "[{item}]" ForIteminitems)

Installez PYODBC: utilisez la commande PiPInstallpyodbc pour installer la bibliothèque; 2. Connectez SQLServer: utilisez la cha?ne de connexion contenant le pilote, le serveur, la base de données, l'UID / PWD ou TrustEd_Connection via la méthode pyoDBC.Connect () et prendre en charge l'authentification SQL ou l'authentification Windows respectivement; 3. Vérifiez le pilote installé: exécutez pyodbc.Drivers () et filtrez le nom du pilote contenant ?SQLServer? pour vous assurer que le nom du pilote correct est utilisé tel que ?ODBCDriver17 pour SQLServer?; 4. Paramètres clés de la cha?ne de connexion

pandas.melt () est utilisé pour convertir les données de format larges en format long. La réponse consiste à définir de nouveaux noms de colonne en spécifiant id_vars conserver la colonne d'identification, Value_Vars Sélectionnez la colonne à fondre, var_name et valeur_name, 1.id_vars = 'name' signifie que la colonne de nom reste inchangée, 2.Value_vars = [Math ',' English ',' Science '. du nom de colonne d'origine, 4.value_name = 'score' définit le nouveau nom de colonne de la valeur d'origine et génère enfin trois colonnes, notamment le nom, le sujet et le score.

Définissez d'abord un formulaire ContactForm contenant le nom, la bo?te aux lettres et les champs de message; 2. De l'avis, la soumission du formulaire est traitée en jugeant la demande de poste, et après la vérification, nettoyée_data est obtenue et la réponse est retournée, sinon le formulaire vide sera rendu; 3. Dans le modèle, utilisez {{form.as_p}} pour rendre le champ et ajouter {% csrf_token%} pour empêcher les attaques CSRF; 4. Configurer le routage d'URL vers Point / Contact / vers la vue Contact_View; Utilisez Modelform pour associer directement le modèle pour obtenir un stockage de données. Djangoforms implémente le traitement intégré de la vérification des données, le rendu HTML et les invites d'erreur, qui convient au développement rapide des fonctions de forme s?re.

PythonCanBeoptimizedFormemory-Boundoperations AdreductoverHeadHroughGenerators, EfficientDatastructures et ManagingObjectliFetimes.first, useGeneratorsInSteadofListStoproceSlargedataseSeItematatime, EvitingLoadingEnteryToMeToMeMory.

L'introduction à l'arbitrage statistique L'arbitrage statistique est une méthode commerciale qui capture l'inadéquation des prix sur le marché financier basé sur des modèles mathématiques. Sa philosophie principale découle de la régression moyenne, c'est-à-dire que les prix des actifs peuvent s'écarter des tendances à long terme à court terme, mais reviendront éventuellement à leur moyenne historique. Les traders utilisent des méthodes statistiques pour analyser la corrélation entre les actifs et rechercher des portefeuilles qui changent généralement de manière synchrone. Lorsque la relation de prix de ces actifs est anormalement déviée, des opportunités d'arbitrage se présentent. Sur le marché des crypto-monnaies, l'arbitrage statistique est particulièrement répandu, principalement en raison de l'inefficacité et des fluctuations drastiques du marché lui-même. Contrairement aux marchés financiers traditionnels, les crypto-monnaies fonctionnent 24h / 24 et leurs prix sont très susceptibles de briser les nouvelles, les sentiments des médias sociaux et les améliorations technologiques. Cette fluctuation des prix constante crée fréquemment un biais de prix et fournit aux arbitrageurs un

Iter () est utilisé pour obtenir l'objet Iterator, et Next () est utilisé pour obtenir l'élément suivant; 1. Utilisez Iterator () pour convertir des objets itérables tels que les listes en itérateurs; 2. Appelez Next () pour obtenir des éléments un par un et déclenchez l'exception de l'arrêt lorsque les éléments sont épuisés; 3. Utilisez Suivant (iterator, par défaut) pour éviter les exceptions; 4. Les itérateurs personnalisés doivent implémenter les méthodes __iter __ () et __Next __ () pour contr?ler la logique d'itération; L'utilisation de valeurs par défaut est un moyen courant de parcourir la traversée et l'ensemble du mécanisme est concis et pratique.
