Не понимаю, как работает класс Python - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужна помощь в понимании того, как Python и Django работают на основе некоторого кода, на который я смотрю.

Скажем, мой urls.py файл имеет следующий

router.register(r'testing', SomeClass)

, а затем в моем файле views.py он настроен так:

class SomeClass():
    database = DatabaseValues.objects.all()

    def first_def(self):
        # do some filtering and such on db results

        return database

    def second_def(self):
        a = 20
        b = 40
        return b - a

     def third_def(self):
        z = 200
        y = 400
        return y - z

КогдаSomeClass вызывается в пользовательском интерфейсе путем нажатия на http://localhost/testing url, что возвращается ??

1 Ответ

0 голосов
/ 25 сентября 2019

Я бы порекомендовал внести некоторые изменения в urls.py Я думаю, что этот метод ниже легче понять.

при запуске python3 manage.py runserver вы можете открыть 127.0.0.1/example.

причина, по которой вы не понимаете, в том, что у Django много шаблонного кода.Я бы порекомендовал прочитать больше о том, как работают представления.каждый класс в views.py должен наследовать класс django, в этом примере я использую TemplateView.имя вашего приложения - это папка, которая создается при добавлении в проект нового django-приложения.

from django.urls import path
from .views import exampleView

app_name = "example"

urlpatterns = [
    path('/example', exampleView.as_view(), name='example'),
]

в views.py вы не можете создавать произвольные имена функций.когда веб-сайт загружается www.baseurl / example, вы делаете запрос на получение.поэтому у вас должен быть метод get внутри вашего класса.

template_name относится к html-странице, которая будет отображаться ... имя этого шаблона должно указывать на html-файл, который находится внутри project_root/templates/html_file.html

views.py

from django.views.generic import TemplateView, ListView

class exampleView(TemplateView):
    template_name = 'test.html'

def get(self, request):
    print("hello")
    return render(request, self.template_name, {})

, если вы хотите, чтобы в вашем классе были классные функции.Добавьте их ниже функции get и вызывайте их, когда пользователь делает запрос get.

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