PHP网页“翻译”为Python Web应用程序


PHP web page "translated" to Python web app

我想知道这个(我的'index.php')单页下载网站(我做的)是否可以"翻译"为python web应用程序('get.py')。

以下是来自"index.php"的PHP:

<?php
    echo '
        <form method="post">
            <input type="text" class="text" placeholder="URL" name="url">
            <input type="submit" class="submit" name="Submit" value="Get Link">
        </form>
    ';
    if (isset($_POST['Submit'])) {
        $url = $_POST['url'];
        echo '<br><a href="http://'.$url.'" download>Download</a><br>';
    }
?>

谢谢!!

我建议使用Javascript而不是Python来处理这个问题。Python是一种纯粹的后端语言,而Javascript的语法与PHP几乎相同。如果你尝试使用Python来做到这一点,你还必须使用Javascript来处理前端。

读到

我 5 年前问过的这个问题很有趣,但现在我在这里回答我自己的问题,供任何其他可能像我一样学习 PHP 的初级开发人员,并希望解决将"转换"这样的基本内容"转换为更"现代"的方法。

在问这个问题的时候,我对Web开发非常陌生,不知道我想要或需要什么。我只被告知Python比PHP更可取,尽管这是他们的观点,而且我对这个主题的任何批判性思考都太新鲜了。

与PHP一样,Python是一种后端语言(这意味着它是在服务器上执行的,而不是在浏览器上执行的)。所以从技术上讲,你可以使用像Django或Flask这样的python框架来实现这一点。
然而,正如 bpow 所建议的那样:

我建议使用Javascript而不是Python来处理这个问题。Python是一种纯粹的后端语言,而Javascript的语法与PHP几乎相同。如果你尝试使用Python来做到这一点,你还必须使用Javascript来处理前端。

JavaScript 更适合这种情况,因为实际上没有必要联系服务器来获取我们可以完全在浏览器中完成的操作。

我的建议是拿起一个JavaScript框架并使用它。我会推荐 VueJS,因为它是开源的并且非常容易上手,您只需要在 HTML <head>中包含 CDN <script> 标签即可。这是它在 VueJS 中的外观的想法。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Download Link Generater</title>
    <!-- development version, includes helpful console warnings -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <input type="text" v-model='link_to_download' placeholder="Enter URL of asset you wish to download">
        <a v-bind:href='link_to_download' download>Download {{ link_to_download }}</a>
    </div>
    <script>
    var app = new Vue({
        el: '#app',
        data: {
            link_to_download: '' // This is updated by the text input because it is bound by the 'v-model' attribute. When this changes, it also updates everywhere it is used in the DOM, so here being the href url and the text in the <a> hyperlink.
        }
    })
    </script>
    
</body>
</html>

因为 Vue 是一个反应式框架,所以文本输入会在你键入时更新 data 钩子中的 link_to_download 变量。当data钩子中的变量发生变化(通过v-model绑定)时,DOM 中使用该变量的任何地方都会对不断变化的变量做出反应并镜像它,从而消除了后端服务器"生成"下载链接的需要。