使用Django提交后,如何保持HTML形式数据?

发布于 2025-02-12 04:15:15 字数 2075 浏览 2 评论 0 原文

我在 html 中创建了一个表单,该表单每次提交时都会将数据返回到 django 。但是,在提交后重新加载页面时,以表格输入的数据将丢失。为了解决这个问题,我从 a>然后我修改了我的 views.py 文件:

def search(request):
    if request.method == 'POST':
        search = request.POST['search']
        form = MyForm(request.POST)
        max_pages_to_scrap = 15
        final_result = []
        for page_num in range(1, max_pages_to_scrap+1):
            url = "https://www.ask.com/web?q=" + search + "&qo=pagination&page=" + str(page_num)
            res = requests.get(url)
            soup = bs(res.text, 'lxml')
            result_listings = soup.find_all('div', {'class': 'PartialSearchResults-item'})

            for result in result_listings:
                result_title = result.find(class_='PartialSearchResults-item-title').text
                result_url = result.find('a').get('href')
                result_desc = result.find(class_='PartialSearchResults-item-abstract').text
           
                final_result.append((result_title, result_url, result_desc))

        context = {'final_result': final_result}
        form = MyForm()

        return render(request, 'index.html', context,{'form':form})

我在 models.py.py 文件中写下了以下代码:

from django import forms
from django.db import models 

# Create your models here.

class MyForm(forms.Form):
    search = forms.CharField(max_length=500)

这是我的 index.html的内容文件:

<form method="POST" action="search">
                        {% csrf_token %}
                        <input  type="search" name="search" placeholder="Search here..." value="{{form.search.value}}" autofocus x-webkit-speech/>
                       
                </form>

尽管进行了修改,但提交后仍未保留表单数据。

I created a form in html that returns data to Django each time it is submitted. However, when the page is reloaded after submission, the data entered in the form is lost. In order to solve this problem, I took inspiration from the documentation and this blog and then I modified my views.py file:

def search(request):
    if request.method == 'POST':
        search = request.POST['search']
        form = MyForm(request.POST)
        max_pages_to_scrap = 15
        final_result = []
        for page_num in range(1, max_pages_to_scrap+1):
            url = "https://www.ask.com/web?q=" + search + "&qo=pagination&page=" + str(page_num)
            res = requests.get(url)
            soup = bs(res.text, 'lxml')
            result_listings = soup.find_all('div', {'class': 'PartialSearchResults-item'})

            for result in result_listings:
                result_title = result.find(class_='PartialSearchResults-item-title').text
                result_url = result.find('a').get('href')
                result_desc = result.find(class_='PartialSearchResults-item-abstract').text
           
                final_result.append((result_title, result_url, result_desc))

        context = {'final_result': final_result}
        form = MyForm()

        return render(request, 'index.html', context,{'form':form})

I wrote the following code in my models.py file:

from django import forms
from django.db import models 

# Create your models here.

class MyForm(forms.Form):
    search = forms.CharField(max_length=500)

here is the content of my index.html file:

<form method="POST" action="search">
                        {% csrf_token %}
                        <input  type="search" name="search" placeholder="Search here..." value="{{form.search.value}}" autofocus x-webkit-speech/>
                       
                </form>

Despite my modifications, the form data is not kept after submission.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┊风居住的梦幻卍 2025-02-19 04:15:15

它不能保存,因为您将全新的形式传递给上下文:

...
form = MyForm()

return render(request, 'index.html', context,{'form':form})

只需将 form = myform()移动到 elif request.method =='get':::

if request.method == 'POST':
    ...
    form = MyForm(request.POST)
    ...
    for page_num in range(1, max_pages_to_scrap+1):
        ...

elif request.method == 'GET':
    form = MyForm()

context = {'final_result': final_result, 'form': form}

return render(request, 'index.html', context)

PS将表格与您的上下文保持更加清晰。

It cannot be saved, because you are passing brand new form to context:

...
form = MyForm()

return render(request, 'index.html', context,{'form':form})

Just move form = MyForm() to something like elif request.method == 'GET'::

if request.method == 'POST':
    ...
    form = MyForm(request.POST)
    ...
    for page_num in range(1, max_pages_to_scrap+1):
        ...

elif request.method == 'GET':
    form = MyForm()

context = {'final_result': final_result, 'form': form}

return render(request, 'index.html', context)

PS Keep form with your context, it's way clearer.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文