Проблема с загрузкой модальных форм с использованием django-fm - PullRequest
0 голосов
/ 03 сентября 2018

На основе приведенного здесь примера: https://github.com/django-fm/django-fm Я не могу успешно загрузить модальное окно на основе предоставленного соответствующего файла form-view-model .py.

Вот мой код в models.py:

from django.db import models

    class Test(models.Model):

        test_one = models.CharField(max_length=200)
        test_two = models.CharField(max_length=200)


        def __str__(self):
            '''this function returns the name of the instance'''
            return self.test_one+self.test_two

Вот мой код в forms.py:

from django import forms
from .models import Test

class TestForm(forms.ModelForm):
    class Meta:
        model = Test
        fields = ['test_one', 'test_two',]

Вот мой код в views.py:

from fm.views import AjaxCreateView
from .forms import TestForm
from .models import Test

class TestCreateView(AjaxCreateView):

    model = Test
    form_class = TestForm
    template_name = 'form_example/test.html'

Вот мой код в urls.py:

from django.contrib import admin
from django.conf.urls import url,include
from form_example.views import TestCreateView


urlpatterns =[

    url(r'^create/$',TestCreateView.as_view(),name="test_create"),
]

и, наконец, код в test.html:

{% load static %}

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"/>
        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    </head>
    <body>
        {% include "fm/modal.html" %}
        {% block content %}{% endblock %}

        <a class="fm-create" href="{% url 'test_create' %}"  data-fm-head="Creating new User" data-fm-callback="appendWithAlert" >
         <button class="btn btn-primary btn-sm" type="">Create new User</button></a> 

         <script type="text/javascript">
            $(function() {
                $.fm({debug: true});
            });
         </script>

        <script type="text/javascript">
            $(function() {
    $.fm({
        debug: true,
        custom_callbacks: {
            "appendWithAlert": function(data, options) {
                $(options.modal_target).append(data.message);
                alert("model instance created!");
            }
        }
    });
});
        </script>
    </body> 
</html>

После нажатия кнопки «Создать нового пользователя» результат будет: enter image description here

И если я прокомментирую строку

template_name = 'form_example/test.html'

в views.py и снова запустите приложение, результат: enter image description here

Как эта странность оправдана?

1 Ответ

0 голосов
/ 11 сентября 2018

Наконец я понял, что пошло не так.

Я пытался создать новое окно django-fm из того же URL. Здесь, помимо создания, я добавил обновление и удаление сопоставления URL.

Итак, файл urls.py определен ниже:

urlpatterns = [
#### USER CRUD ####
    url(r'^users/',views.user_list,name="users"),
    url(r'^user/new/$',views.UserCreateView.as_view(),name="user_new"),
    url(r'^user/edit/(?P<pk>\d+)/$', views.UserUpdateView.as_view(), name='user_edit'),
    url(r'^user/delete/(?P<pk>\d+)/$', views.UserDeleteView.as_view(), name='user_delete'),
]

Пытаясь понять, как обрабатывать формы django-fm, я в итоге создаю целый проект с помощью операций AjaxCreateView, AjaxUpdateView и AjaxDeleteView, к которым можно получить доступ отсюда: https://github.com/TopFlankerKiller/localagency/tree/master

Помимо прочего, пользователь может найти шаги установки django-fm в файле: Как создавать модальные окна и управлять ими с помощью django-fm.pdf

...