一直在寻找解决我的问题。。。 刚接触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查询,然后运行该查询以获取结果/在数据库上创建一个新表。
姜戈形式:
如果您想在不改变路径的情况下从表单获取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。