django запуск метода класса пользовательских представлений с одним URL - PullRequest
0 голосов
/ 26 февраля 2020

Я новичок в django. Я хочу управлять своей базой данных с помощью пользовательских методов внутри файла представлений. например, у меня есть этот код, который я хотел бы запустить с javascript - я написал этот код:

Js:

$.ajax({
        type: 'POST',
        url: '/ClassManager/',
        data: {
            data: data,
            csrfmiddlewaretoken: csrftoken,
        },
        success: function() {
            alert("IT WORKED")
        },
        error: function() {
            alert('error');
        }
    })

views.py

def expfunc():
    if request.method == 'POST':
            user = User.objects.get(pk=1)
            addlst = List(content = "list content", creator = user)
            addlst.save()

urls.py

urlpatterns = [
    path('ClassManager/', views.expfunc),
]

Теперь проблема заключается в том, что для каждой новой функции, которую я хочу создать в views.py, мне нужно добавить еще одну строку в urls.py.

мой вопрос - есть ли способ создать класс со всеми пользовательскими методами и получить к ним доступ с одним URL и разными данные?

например:

Js:

$.ajax({
        type: 'POST',
        url: '/ClassManager/functionone()',
        data: {
            data: data
            csrfmiddlewaretoken: csrftoken,
        },
        success: function() {
            alert("IT WORKED")
        },
        error: function() {
            alert('error');
        }
    })

views.py

class DatabaseManager():
    def functionone(): # add new list
        if request.method == 'POST':
                user = User.objects.get(pk=1)
                addlst = List(content = "list content", creator = user)
                addlst.save()
    def functwo(): # update username
        if request.method == 'POST':
                user = User.objects.get(pk=1)
                user.id = 9
                user.save()
    def functhree(): # update list content
        if request.method == 'POST':
                user = User.objects.get(pk=1)
                mylist = List.objects.get(pk=1)
                mylist.content = "updated list content"
                mylist.save()

urls.py

urlpatterns = [
    path('ClassManager/functionone()', views.DatabaseManager.functionone),
]

Я пришел из asp. net фона, где я писал классы с функциями, которые выполняли запросы, и именно так я управлял своей базой данных, поэтому я могу сделать то же самое здесь?

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

1 Ответ

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

Вы можете использовать Представление на основе классов , чтобы реализовать ваши представления как Python объекты вместо функций, но вы не можете вызвать функцию класса с Ajax.

...