Я новичок в Django, и я хотел бы попробовать FBV для деятельности, которая не требует модели.Это в конечном итоге будет реализовывать поиск с пользовательскими параметрами и показывать результаты в шаблоне, но сейчас мой шаблон и представления по существу пусты, чтобы показать эту проблему.
Я использую Python 3.6 и Django 2.1.3.
Уроки идут прямо к CBV, и мне трудно получить хорошую информацию о способе FBV.
File: 'positivepets/picture_search.html':
-------
{% extends 'positivepets/base.html' %}
{% block body %}
<p> You have reached the picture search page </p>
{% endblock %}
File: urls.py
--------
app_name = 'positivepets'
urlpatterns = [...
url(r'^picture_search/$', views.misc_views.picture_search, name='picture_search'),
...]
File: misc_views.py
--------
def picture_search(request):
return render(request, 'positivepets/picture_search.html')
Проблема
Все это прекрасно работает и отображает шаблон picture_search.html
.
Моя проблема заключается в том, что я хочу избежать жесткого кодирования имени шаблона.Я думал, что это будет работать:
def picture_search(request):
return HttpResponseRedirect(reverse('positivepets:picture_search'))
Это переводит пользователя на http://127.0.0.1:8000/positivepets/picture_search/
, но выдает ошибку "слишком много перенаправлений" в chrome.Я думаю, что я просто говорю это перенаправлять к себе снова и снова.
Вопрос
Где я могу указать, что picture_search.html
- это шаблон, который я хочу отобразить без жесткого кодирования в представлении?
Кажется, что ответ должен лежать вreverse
, но я могу найти только примеры CBV reverse()
, и я думаю, что он работает с CBV, потому что в определении класса установлен атрибут template_name.У FBV этого, конечно, нет.
Я надеюсь, что это легко для кого-то с некоторым опытом FBV.