#django #django-views #django-urls
#django #django-представления #django-urls
Вопрос:
Я начну с того, что это не дублированный вопрос. Моя проблема немного отличается в URL с Django 2.2.
Представление, вызывающее объект ‘str’, не является ошибкой сопоставления при возврате HttpResponseRedirect в другое представление в том же приложении.
Я действительно не знаю, что не так. Я использую тот же метод в другом приложении в том же проекте, и он работает.
Проект urls.py
urlpatterns = [
url(r'^$', Home.as_view()),
path('dashboard/', include('dashboard.urls')),
path('main/', include('main.urls'))
]
Приложение urls.py
urlpatterns = [
path('', views.Section.as_view(), name='main-form')
]
Приложение views.py
class Home(View):
def get(self, request):
return render(request, 'index.html', context={})
def post(self, request):
return HttpResponseRedirect(reverse('main-form'))
class Section(View):
def get(self, request):
return HttpResponse("Test Ok")
После отправки домашней формы он должен перенаправляться в представление основной формы (класс Section view), но я получаю ошибку.
Это вызывает ту же ошибку, если я использую URL-адрес в URL-адресе шаблона {% url 'main-form' %}
Если я вручную перейду к просмотру из адресной строки, просмотр отобразится нормально.
Что не так?
Ответ №1:
Вероятно, вы написали шаблон URL, подобный этому:
path('register-sms/', GetPhoneNumberView.as_view(), 'register-sms'),
Вместо этого так:
path('register-sms/', GetPhoneNumberView.as_view(), name='register-sms'),
name
это аргумент ключевого слова, если вы его не учитываете, эта строка становится значением для kwargs
, и вы получаете эту ошибку. Простое исправление, если вы знаете, что искать.
Ответ №2:
Попробуйте указать имя приложения для вашего приложения django urls.py файл, подобный
app_name ='smth'
urlpatterns = [
path('', views.Section.as_view(), name='main-form')
]
Затем в вашем файле просмотра шаблона включите: href={% url 'smth:main-form' %}
Комментарии:
1. Большое вам спасибо @Okayjosh Я не знаю почему, но я переделываю проект, и он работает.