首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django:如何在提交表单后呈现相同的网页

Django:如何在提交表单后呈现相同的网页
EN

Stack Overflow用户
提问于 2018-06-08 02:14:43
回答 1查看 2.9K关注 0票数 1

我有一个带有submit按钮的index.html文件。我想要的功能是,当我点击提交按钮时,python函数应该在后台调用,但index.html的渲染视图应该保持不变。现在,每次我点击submit按钮,就会加载一个新的index.html副本。以下是我的代码

index.html

代码语言:javascript
复制
<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文件如下:

代码语言:javascript
复制
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)  

我是新来姜戈的。我能得到一些关于如何解决这个问题的指针或答案吗?

EN

回答 1

Stack Overflow用户

发布于 2018-06-08 05:30:25

使用相同的视图执行这两个操作。

代码语言:javascript
复制
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <p><input type = "submit" value = "submit" /></p>
</form>

在forms.py:

代码语言:javascript
复制
class LocationForm(forms.Form):
    latitude = form.CharField()
    longitude = form.CharField()

然后在views.py中,你可以这样做:

代码语言:javascript
复制
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})

tutorial中并没有完全介绍这一点,但请看一下formsgeneric views

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50747703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档