【发布时间】:2020-06-09 15:07:10
【问题描述】:
我想显示 DetailView 和独立表单以向其他网站服务器发送 API 请求。我制作了views.py,但只有我得到的是空页面。我试图弄清楚如何在过去的几天里调整它,但仍然不知道如何做到这一点。希望你能帮我解决这个问题
views.py
class DetailPostDisplay(DetailView):
model = EveryPost
template_name = 'post/detailpost.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['form'] = DictForm()
return context
class DictWindowForm(SingleObjectMixin, FormView):
template_name = 'post/detailpost.html'
form_class = DictForm
model = EveryPost
def post(self, request, *args, **kwargs):
self.object = self.get_object()
return super().post(request, *args, **kwargs)
def get_success_url(self):
return reverse('detailpost', kwargs={'slug': self.object.slug})
class DetailPostList(View):
def get(self, request, *args, **kwargs):
view = DetailPostDisplay.as_view()
return view(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
view = DictWindowForm.as_view()
return view(request, *args, **kwargs)
HTML 我不确定 action 是否应该为空或包含 url DetailPostDisplay(需要通过 slug,我不知道如何获取)
<form method="POST" action="">
{% csrf_token %}
{{ form }}
<input type="submit" class="btn btn-dark float-right mt-2" value="Tłumacz">
</form>
urls.py
from django.urls import path
from . import views
from .views import PostListPl, PostListRu, DetailPostDisplay
urlpatterns = [
path('', PostListPl.as_view(), name='index_pl'),
path('ru/', PostListRu.as_view(), name='index_ru'),
path('about/', views.about, name='about'),
path('<slug:slug>/', DetailPostDisplay.as_view(), name='detailpost'),
]
【问题讨论】:
-
不清楚您在浏览器栏中输入的哪个网址不起作用,以及您所说的“我得到空白页面”是什么意思。哪一页?我认为您正在尝试将表单添加到详细视图中,然后您的
DictWindowForm视图是正确的(如果它是视图,为什么称为 Form)并且您应该使用该 而不是 @ 987654325@(您可以完全删除它)。 -
另外,
{{ object }}是您模板中的特定EveryPost,所以{{ object.slug }}可能是 slug。
标签: python django detailview