【发布时间】:2020-12-21 06:26:36
【问题描述】:
总的来说,我对 Django 和 Python 还是很陌生。我目前正在构建一个 Django 应用程序,并试图坚持基于类的视图。
我有一个我想要处理的表单 (FormView),这意味着获取数据、清理它并将其存储在数据库中。处理后,我只想再次显示表单(因此不会重定向到另一个成功页面)并在表单上方显示处理结果。我该怎么做?我已经使用 get_context_data 为结果消息添加额外的上下文,但无法弄清楚如何以及在哪里处理数据以及如何将它与更新上下文数据联系在一起。任何帮助将不胜感激。
forms.py:
from django import forms
class URLsForm(forms.Form):
list_of_urls = forms.CharField(label='One URL per line', widget=forms.Textarea)
views.py
from django.views.generic import FormView
from .models import URL
from .forms import URLsForm
class URLBatchCreateView(FormView):
form_class = URLsForm
template_name = 'bot/url_batch_create.html'
success_url = reverse_lazy('url_batch_create')
def form_valid(self, form):
return super(URLBatchCreateView, self).form_valid(form)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['created_urls'] = 'The result'
return context
url_batch_create.html:
{% extends 'bot/base.html' %}
{% block content %}
{% if created_urls %}
<div>The following URLs where created:<br>{{ created_urls }}</div>
{% endif %}
<form action="" method ="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit" value="Create">
</form>
{% endblock content %}
urls.py:
from django.urls import path
from .views import URLBatchCreateView
urlpatterns = [
path('url/batchcreate', URLBatchCreateView.as_view(), name='url_batch_create'),
]
【问题讨论】: