Я верю, что ответ wencakisa должен решить проблему, но позвольте мне объяснить все с самого начала, возможно, это прояснит ситуацию.
В функции path
необходимо передать три аргумента:
- route - это будет часть URL-адреса.Это должна быть строка;
- представление - как говорится в сообщении об ошибке, оно должно быть вызываемым - что-то, что можно вызвать, например, function ;
- имя (необязательно) - здесь это менее важно;это должна быть строка.
В своем коде вы помещаете секундные аргументы в path
в кавычках, что означает, что они являются просто строками, а не функциями:
'main.views.about' # this is a string - just a few characters put together
main.views.about # this is a function, defined in the directory `main`,
# in the file `views`
Еще одна проблема - импорт.В вашем файле есть несколько ненужных операторов импорта.Если вы хотите использовать объекты (функции, классы и т. Д.) Из файла A в файле B, вам необходимо импортировать их в файл B. Вы можете сделать это несколькими способами:
from . import views # reads: "from the same directory in which the current file (B) is,
# import `views.py`, and everything that's inside it."
# This is called "a relative import"
# and then you can use the imported objects like this:
path('about/', views.about, name='about')
from main import views as main_views # reads: "from the directory `main` in the project
# import the entire `views`, but call it `main_views`
# and then you can use the imported objects like this:
path('about/', main_views.about, name='about')
from main.views import blog, about # reads: from the `main/views.py` import only `blog`
# and `about` - these two are the functions you need
# and then you use them like this:
path('about/', about, name='about')
Я бы предложил вам выбрать один стиль импорта и использовать его последовательно.Последнее в этом случае неплохо, потому что вы можете легко увидеть, какие функции были импортированы из файла views
.Два других оператора импорта будут лишними, вы можете удалить их.
Надеемся, это поможет вам решить вашу проблему.