Django url kwargs в шаблонах
Ранее мы обращались к kwargs
в шаблонах Django с помощью {{view.kwargs.kwarh_name}}
.
Однако, к моему удивлению, это не работает в моем django 3.2.4+. Была ли она удалена, есть ли проблемы со строкой выше?
Примечание: под карликами здесь подразумевается что-то вроде следующего: Дана функция следующего вида:
def GetSomething(request, code):
return render(request, "some template here")
Теперь url-шаблоны будут выглядеть примерно так,
import GetSomething from .views
app_name = "some_app_name_here"
urlpattern = [
path("link/<int:code>/", GetSomething, name="some_cool_name") #http:localhost/link/12345/
]
Теперь в шаблонах HTML/Django или Jinja2 (в зависимости от того, что вы используете), доступ к этому коду будет осуществляться через {{ view.kwargs.code }}
Но так получилось, что это не работает для меня в Django 3.2, какие-нибудь причины???
Надеюсь, я выразился очень ясно!
Метод get_context_data представлений, основанных на классах, добавляет представление в контекст как представление. Если у вас есть представление, основанное на функции, оно не будет добавлено в контекст автоматически. Это не относится к Django версий 3.2.4+
Так что либо используйте представление на основе классов, либо используйте представление на основе функций и передавайте kwargs шаблону через контекстную переменную.
def GetSomething(request, code):
context = {
#some values here
'code':code,
}
return render(request, "some template here", context)
Тогда вы сможете обращаться к своим контекстным переменным в шаблоне напрямую.
{{code}}