You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python向HTML返回字符串并在页面以段落形式展示

问题分析与解决方案

你的代码存在几个核心问题:浏览器无法识别<script type="python">里的后端代码,Python语法错误(用了&&而非and),且未实现后端向前端传递字符串的逻辑。下面用Django框架(贴合你代码里的render和request用法)给出完整可运行的实现:

1. 后端视图代码(views.py)

将Python逻辑放到Django的视图文件中,不要写在HTML内:

from django.shortcuts import render

def test_view(request):
    # 初始化要返回的消息
    response_msg = ""
    
    if request.method == 'POST':
        # 判断哪个按钮被点击
        if 'attack' in request.POST:
            response_msg = "你发起了攻击/拾取动作!"
        elif 'forward' in request.POST:
            response_msg = "你向前移动了一步!"
        elif 'run' in request.POST:
            response_msg = "你开始奔跑!"
        elif 'left' in request.POST:
            response_msg = "你向左转向!"
        elif 'backward' in request.POST:
            response_msg = "你向后移动!"
        elif 'right' in request.POST:
            response_msg = "你向右转向!"
    
    # 将消息传递给HTML模板
    return render(request, '1st.html', {'response_msg': response_msg})

2. HTML模板代码(1st.html)

添加<p>标签显示后端返回的字符串,同时修复Django要求的CSRF验证问题:

<!DOCTYPE html>
<html>
    <head>
        <title>PythonGame.html</title>
    </head>
    <body>
        <!-- 显示后端返回的字符串 -->
        <p>{{ response_msg }}</p>
        
        <table border="1">
            <tr>
                <th>
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn" type="submit" name="attack" value="attack">attack/pickup</button>
                    </form>
                </th>
                <th>
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn" type="submit" name="forward" value="forward">   forward   </button>
                    </form>
                </th>
                <th>
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn" type="submit" name="run" value="run">     run     </button>
                    </form>
                </th>
            </tr>
            <tr>
                <th>
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn" type="submit" name="left" value="left">     left    </button>
                    </form>
                </th>
                <th>
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn" type="submit" name="backward" value="backward">  backward   </button>
                    </form>
                </th>
                <th>
                    <form action="" method="post">
                        {% csrf_token %}
                        <button class="btn" type="submit" name="right" value="right">    right    </button>
                    </form>
                </th>
            </tr>
        </table>
    </body>
</html>

关键修复说明

  • 后端代码独立存放:Python后端逻辑必须放在Web框架的视图文件中,浏览器无法直接执行Python代码。
  • 语法修正:把&&改成Python的and,同时用in request.POST判断按钮是否提交(避免键不存在报错)。
  • 上下文变量传递:通过render的第三个参数把response_msg传递给模板,前端用{{ response_msg }}渲染内容。
  • CSRF令牌:Django要求POST表单必须包含{% csrf_token %},否则会拒绝请求。

若使用Flask框架,逻辑类似:后端通过render_template传递变量,前端用{{ 变量名 }}渲染,表单无需CSRF令牌(除非手动配置)。

内容的提问来源于stack exchange,提问作者Kyle_3_1415

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 23:35:22