Объединить независимую форму с DetailView - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу отобразить 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 Я не уверен, должно ли действие быть пустым или включите URL DetailPostDisplay (требуется передать слаг, который у меня нет, как получить)

        <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'),
]

1 Ответ

0 голосов
/ 28 февраля 2020

Для будущих поколений я смешал и продумал это. Если вы хотите просто поместить форму в DetailView, создайте сообщение def и поместите туда logi c. Код ниже:

views.py

class DetailPostDisplay(DetailView):
    model = EveryPost
    template_name = 'post/detailpost.html'

    def get_context_data(self, **kwargs):
        context = super(DetailPostDisplay, self).get_context_data(**kwargs)
        context['form'] = DictForm
        return context

    def post(self, request, *args, **kwargs):
        form = DictForm(request.POST)
        if form.is_valid():
            self.object = self.get_object()

И более поздний код для передачи переменных в шаблон из формы

            context = super(DetailPostDisplay, self).get_context_data(**kwargs)
            context['form'] = DictForm
            context['word'] = request.POST.get('word')
            return self.render_to_response(context=context)
...