我得到一个错误NoReverseMatch当我尝试从一个视图到另一个传递两个参数。这是通过参数的观点:无法修复的Django NoReverseMatch错误
# promotion/views.py
def enter_promo_code(request, template):
if request.method == "POST":
form = PromotionCodeForm(request.POST)
if form.is_valid():
message_text, expiry_date = process_valid_promo_code(request.user, form.cleaned_data['promo_code'])
return HttpResponseRedirect(reverse('welcome-page-promo', \
kwargs={'message_text': message_text, 'expiry_date': expiry_date}))
else:
form = PromotionCodeForm(label_suffix="")
context = {'form': form}
return render(request, template, context)
这是接收视图。请注意,两个输入参数是可选的。 urlpatterns显示可以使用或不使用参数来调用此视图。
# home/views.py
def welcome_page(request, template, message_text=None, expiry_date=None):
account = Account.objects.get(pk=request.user.id)
context = {'uid': request.user.id, 'account_type': account.type.account_type_cd, 'message_text': message_text, 'expiry_date': expiry_date}
return render(request, template, context)
这里是接收视图的URL模式:
# home/urls.py
url(r'^welcome/$',
'home.views.welcome_page',
{'template': 'welcome_page.html'},
name='welcome-page'),
url(r'^welcome/(?P<message_text>\w{1,})/(?P<expiry_date>\w{1,})/$',
'home.views.welcome_page',
{'template': 'welcome_page.html'},
name='welcome-page-promo'),
当我执行的推广来看,我得到这个错误返回HttpResponseRedirect命令执行时:
NoReverseMatch at /promotion/code/
Reverse for 'welcome-page-promo' with arguments '()' and keyword arguments '{'message_text': u'Your promotion code was approved! You will receive a one-year free trial membership which expires on ', 'expiry_date': 'Jul. 18, 2018'}' not found. 1 pattern(s) tried: ['welcome/(?P<message_text>\\w{1,})/(?P<expiry_date>\\w{1,})/$']
我m在项目中的不同应用程序中运行相同的代码模式,并且运行时没有错误。任何人都可以看到我做错了什么?
为什么你在url完整的消息文本? – Sayse
是的,现在我看着它,我想做的事很愚蠢。 – William