Django CreateView не создается при отправке формы - PullRequest
0 голосов
/ 12 января 2019

По моему views.py:

class DatasetRequestCreateView(CreateView):
    model = DatasetRequest
    form_class = DatasetRequestForm
    template_name = 'engine/datasetrequest_create.html'

    def get_success_url(self):
        return reverse("datasetrequest_detail", kwargs={
            'pk': str(self.kwargs['pk']),
            'slug': str(self.kwargs['slug'])})

    def form_valid(self, form):

        f = form.save(commit=False)
        f.creator = self.request.user
        f.save()
        # dsr = f.save()
        # dsr.votes.up(self.request.user.pk)

        return super(DatasetRequestCreateView, self).form_valid(form)

    def form_invalid(self, form):

        return self.render_to_response(
            self.get_context_data(form=form))

forms.py

class DatasetRequestForm(forms.ModelForm):

    class Meta:
        model = DatasetRequest
        exclude = ('creator', 'vote_score', 'num_vote_up',
               'num_vote_down', 'slug', 'best_dataset_entry', 'is_paid')

Соответствующие urlpatterns в urls.py

urlpatterns = [
# datasetrequest views
    path('dataset-request/<int:pk>/<slug:slug>/',
         views.DatasetRequestDetailView.as_view(), name='datasetrequest_detail'),
    path('dataset-request/create/', 
         login_required(views.DatasetRequestCreateView.as_view()), name='datasetrequest_create'),
    path('dataset-request/update/<int:pk>/<slug:slug>/',
         login_required(views.DatasetRequestUpdateView.as_view()), name='datasetrequest_update'),
    path('dataset-request/delete/<int:pk>/<slug:slug>/',
         login_required(views.DatasetRequestDeleteView.as_view()), name='datasetrequest_delete'),

    path('dataset-request/pay/<int:dsr_pk>/',
         login_required(views.pay_for_dataset_request), name='datasetrequest_pay'),
]

Страница в вопросе: http://datafix.io/dataset-request/create Войдите под именем пользователя «test» и паролем «djangohelp» или создайте свою учетную запись.

Чтобы воссоздать ошибку, введите заголовок, описание и (int) вознаграждение и попробуйте отправить форму. Он просто обновит страницу, не создав форму.

DatasetRequestCreateView работал нормально, прежде чем я интегрировал django-wysiwyg с tinymce в форму. Не уверен, что не так. Документы находятся в их файле readme: https://github.com/pydanny-archive/django-wysiwyg

Заранее спасибо

1 Ответ

0 голосов
/ 12 января 2019

Очевидно, что ваша форма недействительна, и вы не отображаете никаких ошибок проверки на стороне сервера. Сообщения об ошибках, которые вы видите при выходе, например, пустое поле title отображается браузером, поскольку поле имеет атрибут HTML5 required.

Убедитесь, что вы правильно визуализируете ошибки проверки в своем шаблоне, добавив {{ field.errors }} для каждого поля, а также {{ form.non_field_errors }}.

Это должно дать вам представление о том, что происходит не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...