मैं एक मेनू फॉर्म बनाने की कोशिश कर रहा हूं जो कई पृष्ठों से चयन करने के लिए ड्रॉपडाउन (यहां डी 1 कहा जाता है) का उपयोग करता है। D1 का चयनित मान HTTP POST के माध्यम से एक पायथन स्क्रिप्ट को भेजा जाता है (इसे बहुत पुराने और धीमे उपकरणों का समर्थन करना है, इसलिए मैं JS का उपयोग नहीं कर सकता) जो उपयोगकर्ता को उनके चुने हुए पृष्ठ पर पुनर्निर्देशित करता है।

#!C:/python36-32/python
import cgi
import cgitb
cgitb.enable()
print("Content-type: text/html")
print()
print("<html><head>")
print("")
url = cgi.FieldStorage().getvalue("D1")
#url = url + ".htm"
#print("""<meta http-equiv=\"refresh\" content=\"0\";url=\""""+url+"""\" /> """)
print("</head><body>")
print("<center>Redirection</center>")
print(url)
#for i in range len(url):
    #test[i] = url[i]
    print url


print(url[0])
print(url[1])
print(url[2])
#print("""<a href='"""+url+"""'>Click here if you are not redirected.</A>""")
#print(cgi.FieldStorage())

जैसा कि आप देख सकते हैं, मैं इस कोड की पंक्तियों पर टिप्पणी कर रहा हूं और यह देखने के लिए प्रयोग कर रहा हूं कि क्या मैं इसे काम पर ला सकता हूं, लेकिन मुझे कोई भाग्य नहीं मिला है।

प्रिंट "url" चर में आउटपुट को एक स्ट्रिंग के रूप में मानता है, लेकिन cgitb द्वारा डंप किए गए त्रुटि संदेशों के अनुसार, हर दूसरे कमांड को लगता है कि यह कोई नहीं है। इसे ठीक करने के लिए मुझे क्या करना चाहिए?

संपादित करें: मेरा एचटीएमएल कोड यहां है

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>TOMROW</title>
</head>

<body bgcolor="#6699FF">

<form method="POST" target="_top" enctype="application/x-www-form-urlencoded"action="toolbar.py">

    <table style="position=absolute; top=0px; width:100%;" bordercolorlight="#FFFFFF" bordercolordark="#000000" border="3">
        <tr>
            <td height="34" width="432"><font face="Courier New">&nbsp;TOMROW</font></td>
            <td height="34" width="168">
    <p align="center">
    <select name="D1">
        <option value="Login">Login</option>
        <option value="policy">Policy</option>
        <option value="links">Links</option>
        <option value="Signup">Sign Up</option>
        <option value="Videos">Videos</option>
        <option value="dload">Download</option>
        <option value="contact">Contact</option>
        <option value="games">Games</option>
        <option value="profile">Your Profile</option>

    </select>
    <input type="submit" value="Go" name="B1">
    </p></td>
        </tr>
    </table>
</form>

</body>

</html>

गरीब इंडेंटेशन के लिए मेरी माफ़ी।

0
Tomtom Sangster 24 अक्टूबर 2018, 15:34

1 उत्तर

सबसे बढ़िया उत्तर

क्या आप ब्राउज़र में डेवलपर टूल देखने और HTTP अनुरोध की जांच करने का प्रयास कर सकते हैं? क्या पोस्ट एक मल्टीपार्ट फॉर्म या एक साधारण यूआरएल-आधारित पैरामीटर एन्कोडिंग कर रहा है?

मैं ब्राउज़र के लिए एक REST एडऑन के साथ cgis डीबग करने का प्रयास करता हूं और cgi सक्षम के साथ बिल्ट-इन http.server का उपयोग कर रहा हूं:

python3 -m http.server --cgi 8000

मैंने यूआरएल-आधारित पैरामीटर के साथ कुछ सरल परीक्षण किए हैं और सबकुछ अपेक्षित काम करता है। कुछ अतिरिक्त जानकारी समस्या को कम करने में मदद करेगी।

संपादित करें: आपके द्वारा प्रदान किए गए HTML का उपयोग करके यह मेरे लिए काम करता है:

#!/usr/bin/python3
import cgitb
import cgi
import os
cgitb.enable()

form = cgi.FieldStorage()
page= form.getvalue("D1")
base_url=os.environ["HTTP_REFERER"]
full_url=os.path.join(base_url,page)
print("Content-Type: text/html")    # HTML is following
print()                             # blank line, end of headers

print("<meta http-equiv='refresh' content='0;{page}.html'>".format(page=full_url))
#print(os.environ)
print("<TITLE>CGI script output</TITLE>")
print("<H1>This is my first CGI script</H1>")
print("This message should never been shown, just a redirect")

आपको cgi-जनित पृष्ठ का एक फ्लैश दिखाई देता है, हो सकता है कि देरी करने का प्रयास करें और एक पाठ इंगित करता है कि आपको पुनर्निर्देशित किया जा रहा है।

0
grcanosa 25 अक्टूबर 2018, 06:40