如何修复“str"对象不是映射错误 [英] How to fix 'str' object is not a mapping error
问题描述
我会开始说这不是一个重复的问题.我的问题与 Django 2.2 的 url 略有不同.
I will start saying its't a duplicated question. My problem is a little different in an url with Django 2.2.
当将 HttpResponseRedirect 返回到同一应用程序中的另一个视图时,视图触发str"对象不是映射错误.
An view triggers 'str' object is not a mapping error when return HttpResponseRedirect to another view in same application.
我真的不知道怎么了.我在同一个项目的其他应用程序中使用相同的方法并且它有效.
I really don't know what's wrong. I use same method in other application in same project and it works.
项目 urls.py
urlpatterns = [
url(r'^$', Home.as_view()),
path('dashboard/', include('dashboard.urls')),
path('main/', include('main.urls'))
]
应用程序 urls.py
Application urls.py
urlpatterns = [
path('', views.Section.as_view(), name='main-form')
]
应用程序视图.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")
发布主页表单后,它应该重定向到主表单视图(截面视图类),但出现错误.
After post home form it should redirect to main-form view (Section view class) but I get error.
如果我在模板 url {% url 'main-form' %}
It triggers same error if I use the url in a template url {% url 'main-form' %}
如果我手动导航以从地址栏查看,视图呈现良好.
If I navigate manually to view from address bar, view renders fine.
怎么了?
推荐答案
你可能写过这样的 URL 模式:
You probably wrote a URL pattern like this:
path('register-sms/', GetPhoneNumberView.as_view(), 'register-sms'),
而不是这样:
path('register-sms/', GetPhoneNumberView.as_view(), name='register-sms'),
name
是一个关键字参数,如果省略它,该字符串将成为 kwargs
的值,并且会出现此错误.如果您知道要查找的内容,那么简单修复即可.
name
is a keyword argument, if you leave it out, that string becomes the value for kwargs
and you get this error. Simple fix if you know what to look for.
这篇关于如何修复“str"对象不是映射错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!