J'ai besoin de créer une page Web pour une mission, elle n'a pas besoin d'être téléchargée sur le Web, j'utilise simplement un fichier .html local. J'ai fait quelques lectures et j'ai trouvé le code HTML et python suivant:
<!DOCTYPE html>
<html>
<head>
<title>
CV - Rogier
</title>
</head
<body>
<h3>
Study
</h3>
<p>
At my study we learn Python.<br>
This is a sall example:<br>
<form action="/cgi-bin/cvpython.py" method="get">
First Name: <input type="text" name="first_name"> <br />
Last Name: <input type="text" name="last_name" />
<input type="submit" value="Submit" />
</form>
</p>
</body>
</html>
Python:
import cgi
import cgitb #found this but isn't used?
form = cgi.FieldStorage()
first_name = form.getvalue('first_name').capitalize()
last_name = form.getvalue('last_name').capitalize()
print ("Content-type:text/html\r\n\r\n")
print ("<html>")
print ("<head>")
print ("<title>Hello - Second CGI Program</title>")
print ("</head>")
print ("<body>")
print ("<h2>Your name is {}. {} {}</h2>".format(last_name, first_name, last_name))
print ("</body>")
print ("</html>")
Cependant, cela donne simplement les impressions sous forme de texte et non pas en tant que fichier html approprié avec la ligne 1 que je veux.
Avez-vous un serveur Web comme la configuration Apache sur lequel cela fonctionne? Si vous ne le faites pas, je ne suis pas sûr que cela fonctionnera, vous voudrez peut-être jeter un œil à Mamp Pour lui permettre d'exécuter votre script python vous aurez également besoin de modifier le httpd.conf
fichier
De:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
À:
<Directory "/var/www/cgi-bin">
Options +ExecCGI
AddHandler cgi-script .cgi .py
Order allow,vdeny
Allow from all
</Directory>
Alternativement
Si vous voulez simplement créer un fichier HTML réel sans configurer de serveur, une façon très simple mais grossière de le faire serait de tout simplement écrire dans un fichier HTML que vous créez comme:
fo.write("Content-type:text/html\r\n\r\n")
fo.write("<html>")
fo.write("<head>")
fo.write("<title>Hello - Second CGI Program</title>")
fo.write("</head>")
fo.write("<body>")
fo.write("<h2>Your name is {}. {} {}</h2>".format("last_name", "first_name", "last_name"))
fo.write("</body>")
fo.write("</html>")
fo.close()
Ce qui va créer un document HTML appelé yourfile.html
dans le même répertoire que votre projet python.
Je ne recommande pas de faire cela, mais je me rends compte que comme c'est une tâche, vous n'avez peut-être pas le choix d'utiliser des bibliothèques. Dans le cas où vous, une manière plus élégante serait d'utiliser quelque chose comme yattag qui le rendra beaucoup plus facile à maintenir.
Pour copier l'exemple Hello World de leur site Web.
from yattag import Doc
doc, tag, text = Doc().tagtext()
with tag('h1'):
text('Hello world!')
print(doc.getvalue())
Mise à jour:
Une autre alternative si vous n'avez pas de configuration de serveur Web local est d'utiliser Flask comme serveur Web. Vous devrez structurer votre projet comme:
/yourapp
basic_example.py
/static/
/test.css
/templates/
/test.html
Python:
__author__ = 'kai'
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/')
def index():
return render_template('test.html')
@app.route('/hello', methods=['POST'])
def hello():
first_name = request.form['first_name']
last_name = request.form['last_name']
return 'Hello %s %s have fun learning python <br/> <a href="/">Back Home</a>' % (first_name, last_name)
if __== '__main__':
app.run(Host = '0.0.0.0', port = 3000)
HTML:
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="static/test.css">
<title>
CV - Rogier
</title>
</head>
<body>
<h3>
Study
</h3>
<p>
At my study we learn Python.<br>
This is a sall example:<br>
<form action="/hello" method="post">
First Name: <input type="text" name="first_name"> <br />
Last Name: <input type="text" name="last_name" />
<input type="submit" name= "form" value="Submit" />
</form>
</p>
</body>
</html>
CSS (Si vous voulez styliser votre formulaire?)
p {
font-family: verdana;
font-size: 20px;
}
h2 {
color: navy;
margin-left: 20px;
text-align: center;
}
Faites un exemple de base basé sur votre question ici J'espère que cela vous aidera à vous mettre sur la bonne voie, bonne chance.
vérifiez d'abord l'URL du navigateur comme ça ressemble à un fichier: /// C: /xampp/htdocs/cgi_python/form.html
cela signifie que votre code est correct et sans erreur, mais la sortie s'affiche sous la forme d'un code de script python parce que "le code fonctionne dans la console et non dans le navigateur"
c'est-à-dire que vous ouvrez directement un fichier dans le dossier htdocs et cliquez sur filename.html et exécutez puis sortez au format texte Pour ouvrir un navigateur
La solution est
Modifiez ce qui suit dans le fichier Apache/conf/httpd.conf:
<Directory "C:/xampp/cgi-bin">
AllowOverride All
Options None
Require all granted
</Directory>
À:
<Directory "C:/xampp/cgi-bin">
Options ExecCGI
AddHandler cgi-script .cgi .py
Order allow,deny
Allow from all
</Directory>
sinon exécutez le formulaire html en utilisant également python: (pas besoin de changer au-dessus du fichier http.conf)
#!C:\Users\Dell\AppData\Local\Programs\Python\Python36\Python.exe
print("Content-type:text/html \r\n\r\n")
print('<html>')
print('<body>')
print('<form action="/cgi-bin/hello_get.py">')
print('First Name:<input type = "text" name = "first_name"><br/>')
print('Last Name:<input type = "text" name = "last_name" />')
print('<input type = "submit" value = "submit">')
print('</form>')
print('</body>')
print('</html>')`
Je suis nouveau à la fois en HTML et en Python, mais pour autant que je sache, le HTML ne doit pas être mis en retrait. Cela signifie que vous pouvez passer beaucoup de code HTML en une seule python impression. Vous pouvez réellement imprimer un code HTML entier sur une seule ligne.
J'imprime des listes dans des tables html avec des boucles for. Le code HTML n'est pas sympa, mais ça marche. je suppose que vous avez seulement besoin qu'ils soient temporaires, comme moi.
À votre santé!