Может ли Django TemplateResponseMixin сам по себе сделать шаблон? - PullRequest
0 голосов
/ 22 февраля 2020

Можно ли отобразить представление в моем браузере, поместив в подкласс ТОЛЬКО TemplateResponseMixin (сам по себе)?

Это вопрос любопытства больше всего на свете. Я не новичок в ccbv.co.uk .

Мне уже известно следующее:

  1. content_type, response_class, template_engine, template_name - template_name является важным атрибутом для TemplateResponseMixin
  2. get_template_names - кажется, просто возвращает значение template_name в списке
  3. render_to_response - принимает context в качестве аргумента, устанавливает для атрибута content_type значение None (если не определено) и возвращает TemplateResponse по умолчанию, используя объект атрибута response_class. TemplateResponse является подклассом SimpleTemplateResponse , который знает о текущем HttpRequest

Пример, который выдает ошибку:

views.py

class JaradView(TemplateResponseMixin):
    template_name = 'courses/course/jarad.html'

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('greeting/hey/', views.JaradView, name='say_hey')
]

Джарад. html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <h1>Hey Jarad!</h1>
    <h2>Why are you talking to yourself?</h2>

</body>
</html>

Что происходит?

Это крушение поезда :

Traceback (most recent call last):
  File "C:\Users\Jarad\Documents\PyCharm\educa\venv\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Jarad\Documents\PyCharm\educa\venv\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Jarad\Documents\PyCharm\educa\venv\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /course/greeting/hey/
Exception Value: JaradView() takes no arguments

Итак, аргументы передаются в JaradView ()? или никакие аргументы не передаются в JaradView ()?

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

Можно ли визуализировать шаблон с помощью ТОЛЬКО TemplateResponseMixin? Если да, пример как?

...