django - Django:提交表单后如何呈现相同的网页
问题描述
我有一个带有提交按钮的 index.html 文件。我想要这样的功能,当我单击提交按钮时,python 函数应该在后台被调用,但 index.html 的渲染视图应该保持不变。现在,每次我单击提交按钮时,都会加载一个新的 index.html 副本。这是我的代码
索引.html
<form action = "submit" method = "post">
<p>latitude <input type = "text" id = "Latbox" name = "Latbox" /></p>
<p>Longitdue <input type = "text" id = "Lonbox" name = "Lonbox" /b></p>
<p><input type = "submit" value = "submit" /></p>
</form>
我的views.py 文件如下:
from django.shortcuts import render
from django.views.generic import TemplateView
class HomePageView(TemplateView):
def get(self, request, **kwargs):
return render(request, 'index.html', context=None)
def submit(request):
LAT=request.POST['Latbox']
LON= request.POST['Lonbox']
print (LAT, LON)
return render(request,'index.html',context=None)
我是 Django 的新手。我能得到一些关于如何解决这个问题的指示或答案吗?
解决方案
使用相同的视图来执行这两个操作。
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<p><input type = "submit" value = "submit" /></p>
</form>
在forms.py:
class LocationForm(forms.Form):
latitude = form.CharField()
longitude = form.CharField()
然后在views.py
你做这样的事情:
class HomePageView(TemplateView):
template_name = "index.html"
def get(self, request, **kwargs):
form = LocationForm()
return render(request, self.template_name, {"form": form})
def post(self, request, **kwargs):
form = LocationForm(request.POST)
if form.is_valid():
pass # do something with form.cleaned_data
return render(request, self.template_name, {"form": form})
推荐阅读
- javascript - 了解如何使用 Node.JS 获取
- java - 我应该在这里使用平面地图还是键值列表地图
- python - Flask + Post + Get + 文件夹结构
- javascript - 根据条件过滤对象的javascript数组
- java - 从快照位置释放 jar 文件下载
- python - 从目录加载图像数据集,而不是从 tf.load 加载 MNIST 数据集
- qt - 未找到状态和绑定资源
- r - R如何通过集合论对列值进行分组
- node.js - Angular 9“ng build --prod”与 Devextreme 仅在 Jenkins 上失败
- android - Android:如何在不停止应用程序的情况下关闭设备屏幕的背光