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

Django新手求助:如何将表单用户输入处理逻辑迁移至Django框架

嘿,作为Django新手,把你的Python逻辑整合到框架里其实没那么复杂!我来一步步帮你把用户表单输入和列表比对的功能部署起来~

第一步:创建Django表单(Form)

首先我们需要在你的Django应用里定义一个表单,用来接收用户的输入。在应用目录下新建一个forms.py文件,写入以下代码:

from django import forms

class InputForm(forms.Form):
    user_input = forms.CharField(
        label='请输入内容', 
        max_length=200, 
        widget=forms.Textarea  # 用文本域让用户输入更方便
    )
第二步:编写视图函数处理核心逻辑

接下来在应用的views.py里,把你现有的NLTK代码整合进去,同时处理表单的提交和渲染:

import nltk
from nltk.tokenize import word_tokenize
from django.shortcuts import render
from .forms import InputForm

# 先下载NLTK分词需要的punkt数据(第一次运行会自动下载,之后可以注释掉)
nltk.download('punkt')

# 这里替换成你自己的比对列表
comparison_list = ["hello", "how", "are", "you", "python", "django"]

def input_processing(request):
    result = None  # 用来存储比对结果
    if request.method == 'POST':
        # 处理表单提交
        form = InputForm(request.POST)
        if form.is_valid():
            # 获取用户的真实输入(已经经过Django的表单验证)
            userinput = form.cleaned_data['user_input']
            
            # 你的原有处理逻辑
            sCV = userinput.replace(",", '')
            cv = word_tokenize(sCV)
            
            # 执行比对:找出输入分词后和列表匹配的词汇
            matched_words = [word.lower() for word in cv if word.lower() in comparison_list]
            
            # 生成结果信息
            if matched_words:
                result = f"匹配到的词汇:{', '.join(matched_words)}"
            else:
                result = "没有找到匹配的词汇"
    else:
        # GET请求时显示空表单
        form = InputForm()
    
    # 把表单和结果传给模板
    return render(request, 'input_template.html', {'form': form, 'result': result})
第三步:创建模板显示表单和结果

在应用目录下新建templates文件夹,然后在里面创建input_template.html文件,用来渲染表单和展示比对结果:

<!DOCTYPE html>
<html>
<head>
    <title>输入内容比对</title>
</head>
<body>
    <h1>请输入内容进行比对</h1>
    <form method="post">
        {% csrf_token %}  <!-- Django必须的CSRF防护 -->
        {{ form.as_p }}  <!-- 自动把表单渲染成段落格式 -->
        <button type="submit">提交</button>
    </form>
    
    {% if result %}
        <h3>处理结果:</h3>
        <p>{{ result }}</p>
    {% endif %}
</body>
</html>
第四步:配置URL路由

最后需要把视图和URL绑定起来。在应用目录下新建urls.py文件:

from django.urls import path
from . import views

urlpatterns = [
    path('process-input/', views.input_processing, name='process-input'),
]

然后在项目根目录的urls.py里,把应用的路由包含进去(替换成你的应用名称):

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.urls')),  # 这里的myapp换成你的应用名
]
一些注意事项
  • 确保你已经安装了NLTK:在终端运行 pip install nltk
  • 如果第一次运行时下载punkt数据失败,可以手动在终端执行:python -c "import nltk; nltk.download('punkt')"
  • 你的比对列表可以根据需求修改,比如从数据库读取、从配置文件加载,不一定非要写死在代码里

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:09:10