Maison > interface Web > js tutoriel > Apprenez à créer un site Web simple : serveur Web de développement Python

Apprenez à créer un site Web simple : serveur Web de développement Python

坏嘻嘻
Libérer: 2018-09-13 17:35:31
original
4769 Les gens l'ont consulté

Il existe d'innombrables frameworks Web en Python, depuis les petites architectures de base jusqu'aux architectures complètes, et ils ont leurs propres avantages. Vous êtes donc prêt à l'utiliser pour faire du développement Web, mais avant d'entrer dans les détails, commençons par le début.

Objectif

Créer un site Web de visualisation d'images en utilisant les ressources d'images riches existantes

Conditions

Langage de développement :

python3

Bibliothèque :

flask : un framework de serveur Web python open source
jinja2 : le moteur de modèles par défaut de flask

Éditeur :

pycharm recommandé

Le serveur web le plus simple

python nous fournit une interface : WSGI : Web Server Gateway Interface
Il nécessite uniquement aux développeurs web d'implémenter une fonction pour répondre aux requêtes HTTP. Sans toucher aux connexions TCP, aux formats de requêtes brutes HTTP et de réponses.
Ce qui suit est un exemple de l'application Web la plus simple :

# hello.pydef application(environ, start_response):
    start_response(&#39;200 OK&#39;, [(&#39;Content-Type&#39;, &#39;text/html&#39;)])    return [b&#39;<h1>Hello, Python web!</h1>&#39;]# server.py# 从wsgiref模块导入:from wsgiref.simple_server import make_server# 导入我们自己编写的application函数:from hello import application# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:httpd = make_server(&#39;&#39;, 8000, application)
print(&#39;Serving HTTP on port 8000...&#39;)# 开始监听HTTP请求:httpd.serve_forever()
Copier après la connexion
  • environ : un objet dict contenant toutes les informations de la requête HTTP

  • start_response : Une fonction qui envoie une réponse HTTP.

Placez les deux scripts dans le même répertoire, exécutez server.py et visitez http://127.0.0.1:8000 pour voir l'effet.

Traitement des URL

En fait, les applications Web sont le traitement de différentes URL.
Nous modifierons hello.py

def application(environ, start_response):
    method = environ[&#39;REQUEST_METHOD&#39;]
    path = environ[&#39;PATH_INFO&#39;]    if method==&#39;GET&#39; and path==&#39;/&#39;:        return handle_home(environ, start_response)    if method==&#39;POST&#39; and path=&#39;/signin&#39;:        return handle_signin(environ, start_response)
...
Copier après la connexion

Cela gérera deux URL, '/' et '/signin'
Bien sûr, vous pouvez continuer à écrire comme ça... si vous ne le faites pas. Cela ne vous dérange pas si vous êtes fatigué.

Utiliser des modèles

Comme la méthode ci-dessus est trop fatigante et lente, apprenons quelque chose de avancé :
flask

Regardez le code

from flask import Flaskfrom flask import request

app = Flask(__name__)@app.route(&#39;/&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])def home():
    return &#39;<h1>Home</h1>&#39;@app.route(&#39;/signin&#39;, methods=[&#39;GET&#39;])def signin_form():
    return &#39;&#39;&#39;<form action="/signin" method="post">
              <p><input name="username"></p>
              <p><input name="password" type="password"></p>
              <p><button type="submit">Sign In</button></p>
              </form>&#39;&#39;&#39;@app.route(&#39;/signin&#39;, methods=[&#39;POST&#39;])def signin():
    # 需要从request对象读取表单内容:
    if request.form[&#39;username&#39;]==&#39;admin&#39; and request.form[&#39;password&#39;]==&#39;password&#39;:        return &#39;<h3>Hello, admin!</h3>&#39;
    return &#39;<h3>Bad username or password.</h3>&#39;if __name__ == &#39;__main__&#39;:
    app.run()
Copier après la connexion

Notez qu'il s'agit d'un seul fichier.
Analysons ce script :
Flask associe automatiquement les URL aux fonctions en interne via les décorateurs Python. Une fois que
commence à s'exécuter, nous visitons
'/', et la page que nous voyons est un mot "HOME"
'/signin'. À ce moment-là, nous y accédons via GET, et nous voyons un formulaire. , remplissez « admin » et « mot de passe », cliquez pour vous connecter——>
'/signin', maintenant accessible via POST, ce que vous voyez est Bonjour, administrateur ou mauvais nom d'utilisateur ou mot de passe

.

Pour ceux qui ne connaissent pas GET Pour les étudiants disposant de formulaires POST et HTML, il est recommandé d'apprendre les bases du HTML.

Mais cela reste encore un peu rigide. Tout le contenu que les utilisateurs voient lors de l'accès doit être écrit et ne peut pas être réutilisé, ce qui est trop gênant

Utiliser un moteur de modèles

Le modèle résout notre problème ci-dessus. Regardez d'abord un morceau de code

from flask import Flask, request, render_templateimport os

app = Flask(__name__)@app.route(&#39;/&#39;, methods=[&#39;GET&#39;, &#39;POST&#39;])def home():
    path = &#39;/&#39;
    all_file = os.listdir(path)    return render_template(&#39;home.html&#39;,all_file = all_file)if __name__ == &#39;__main__&#39;:
    app.run()
Copier après la connexion

Ici, les noms de tous les fichiers du répertoire racine sont lus et transmis à la page du modèle HTML

Ensuite, le répertoire des modèles est créé dans le même répertoire que .py , notre modèle est stocké ici. La particularité du modèle est que vous pouvez utiliser des instructions et des variables python pour écrire des instructions dans

home.html

{% for i in all_file %}    <a href="/page/{{ i }}">{{ i }}</a>{% endfor %}
Copier après la connexion
<🎜. >{% %} en html. Ce qui est écrit dans 🎜>{{ }} est la variable


, donc le résultat final est que plusieurs balises seront générées, et le nom de la balise est le nom du répertoire. .

Le tutoriel de base ci-dessus fait référence à Liao Xuefeng.

Ainsi, les bases sont terminées, et la prochaine étape sera le produit fini :

Produit fini

Utilisez les images que nous avons explorées la dernière fois pour créer le site Web, bonne idée !

Ici, créez un répertoire statique dans le même répertoire que le script .py pour stocker les images. (L'image ne sera pas liée si elle est placée en dehors du répertoire où se trouve .py)


Puis le fichier modèle
#beautiful_pic.pyfrom flask import Flaskfrom flask import requestfrom flask import render_templateimport os

app = Flask(__name__)#显示所有文件夹@app.route(&#39;/&#39;,methods=[&#39;GET&#39;,&#39;POST&#39;])def list_all():
    path = &#39;./static/mzitu/&#39;
    all_pic = os.listdir(path)    return render_template(&#39;welcome.html&#39;,all_pic = all_pic)#具体展示图片@app.route(&#39;/<path>&#39;,methods=[&#39;GET&#39;,&#39;POST&#39;])def list_pic(path):
    #错误链接无法找到图片目录就提示错误链接
    if(path not in os.listdir(&#39;./static/mzitu/&#39;)):        return render_template(&#39;error.html&#39;)
    pic_path = &#39;./static/mzitu/&#39; + path
    all_pic = os.listdir(pic_path)    return render_template(&#39;pic.html&#39;,title = path,all_pic = all_pic)if __name__ == &#39;__main__&#39;:    #port为端口,host值为0.0.0.0即不单单只能在127.0.0.1访问,外网也能访问
    app.run(host=&#39;0.0.0.0&#39;,port=&#39;2333&#39;)
Copier après la connexion
welcome.html


pic. html
<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>欢迎来到福利页面</title></head><body>
    {% for i in all_pic: %}        <a href="/{{i}}">{{i}}</a>
        <br><br>
    {% endfor %}</body></html>
Copier après la connexion

error.html
<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>{{ title }}</title></head><body>
    {% for i in all_pic %}    <img src="./static/mzitu/{{title}}/{{i}}" alt="{{i}}">
    <br>
    {% endfor %}</body></html>
Copier après la connexion

Recommandations associées :
<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <title>出错了</title></head><body>
    你要访问的页面不存在...    <br>
    <a href="/">点此返回首页</a></body></html>
Copier après la connexion


Eclipse+PyDev+Django+Mysql pour construire un développement Web Python environnement_MySQL

Si vous êtes nouveau dans le développement Web, lequel devriez-vous apprendre, php, python ou ruby ?

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal