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

Django中HTML与Python双向传值:提交后处理结果不显示的解决方案

问题解决步骤

一、修正URL路由配置

你的urls.py里两个空路径会导致路由匹配混乱,result视图永远不会被触发——Django会优先匹配第一个路径。改成单一路径指向处理逻辑的视图:

# urls.py
from django.urls import path
from mywebsite import views

urlpatterns = [
    path("", views.homePage, name='home'),
]

二、合并GET/POST请求处理逻辑

把数据处理逻辑整合到homePage视图中,同时处理页面初始加载(GET)和表单提交(POST):

# views.py
def test_data_preprocessing(test_data1):
    # 保持你的预处理代码不变
    test_data1 = test_data1.lower()
    test_data1 = re.compile(
        r"(http|https|ftp|ssh)://([\w_-]+(?:(?:\.[\w_-]+)+))([\w.,@?^=%&:/~+#-]*[\w@?^=%&/~+#-])?"
    ).sub("", test_data1)
    test_data1 = re.compile(r"<.*?>").sub("", test_data1)  # 移除标签
    test_data1 = TextBlob(test_data1).correct()  # 拼写修正
    test_data1 = "".join(
        filter(lambda x: not x.isdigit(), test_data1)
    )  # 移除数字
    test_data1 = contractions.fix(test_data1)  # 展开缩写
    test_data1 = remove_stop(test_data1)  # 移除停用词
    test_data1 = re.compile(r"[^\w\s]").sub(
        "", test_data1
    )  # 移除标点
    test_data1 = word_tokenize(test_data1)  # 分词
    test_data1 = [
        lemmatizer.lemmatize(w, get_wordnet_pos(w)) for w in test_data1
    ]  # 词形还原
    return test_data1

def homePage(request):
    result = ""  # 初始显示空内容
    if request.method == 'POST':
        # 获取表单提交的数据,用get避免键不存在报错
        namee = request.POST.get('name', '')
        if namee:
            processed_data = test_data_preprocessing(namee)
            # 将处理后的token列表转为字符串,方便页面展示
            result = ' '.join(processed_data)
    # 传递result变量到模板
    return render(request, "index.html", {"result": result})

三、修复模板中的错误

  1. 修正textarea标签的闭合方式(textarea不能自闭合)
  2. 移除按钮的多余引号
  3. 确保表单action指向当前页面,变量名和视图传递的一致:
<!-- index.html -->
<html>
<head>
<title>my</title>
</head>
<body>
<form class="grid" method="POST" action="{% url 'home' %}">
   {% csrf_token %}
   <textarea name="name"></textarea>
   <button type="submit">Detect</button>
</form>
<label>{{ result }}</label>
</body>
</html>

关键问题说明

  1. 变量名不匹配:之前视图传递的是name,但模板用的是{{ result }},导致数据无法渲染,现在统一为result。
  2. 路由冲突:原urls中两个空路径导致处理POST的视图无法被访问,现在统一用homePage处理所有请求。
  3. 结果格式处理:预处理后返回的是token列表,直接显示会是['xxx', 'xxx'],转成字符串更符合页面展示需求。
  4. 表单标签错误:textarea的自闭合写法和按钮的多余引号会导致浏览器解析异常,修正后保证表单正常提交。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:18:00