提问者:小点点

Django调用正确的函数


一直在寻找解决我的问题。。。 刚接触django,可能缺少一个非常简单的逻辑,需要一些帮助。

我在html页面中创建了一个名为ThisPage.html的表单,如下所示:

<form action="{% url 'getvaluefromform' %}" method="POST">{% csrf_token %}
<input type="text" name='mytitle' placeholder="enter title">
<input type="submit" value="save">
</form>

然后我用下面的代码更新了views.py:

from django.shortcuts import render

def index(request):
    return render(request,'thispage.html')

def getvaluefromform(request):
    mytitle = request.POST.get('mytitle')
    print(mytitle)
    return render(request,'thispage.html')

最后,我的urls.py有以下部分:

from dhango.urls import path
from . import views

urlpatterns = [
path('',views.index,name='index'),
path('getvaluefromform',views.getvaluefromform,name='getvaluefromform')
]

问题:当我使用它时,我能够获得输入值,但是url正在更改为'/getvalueFromForm',当我从url部分移除'getvalueFromForm'并保留它''时,代码视图索引就会被提取。

有没有一种方法,我可以调用第二个函数时,按钮被点击,而不移动到新的路径。 请指教。

p.s-我故意不使用模型表单,因为我想基于用户输入构建一个原始sql查询,然后运行该查询以获取结果/在数据库上创建一个新表。


共1个答案

匿名用户

姜戈形式:

如果您想在不改变路径的情况下从表单获取POST数据,您在官方文档中有一个非常好的示例。

HTML表单:

如果你不喜欢Django表单,你可以做如下所述。

def getvaluefromform(request):
    if request.method == 'POST':
        mytitle = request.POST.get('mytitle')
        return render(request,'otherpage.html')
    return render(request,'thispage.html')

这主要是检查是否有POST请求,获取表单数据,如果有get请求,则只需呈现定义的页面。

如果您必须有两条不同的路由,我建议使用JavaScript。