Ich bekomme einen NoReverseMatch-Fehler, wenn ich versuche, zwei Argumente von einer Ansicht zur anderen zu übergeben. Hier ist die Ansicht, die die Argumente übergibt:Django kann nicht repariert werden NoReverseMatch-Fehler
# 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)
Hier ist die Empfangsansicht. Beachten Sie, dass die beiden Eingabeargumente optional sind. Die URL-Muster zeigen, dass diese Ansicht mit oder ohne Argumente aufgerufen werden kann.
# 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)
Hier sind die urlpatterns für die Empfangsansicht:
# 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'),
Wenn ich die Förderung Ansicht ausführen, bekomme ich diesen Fehler, wenn die Rück HttpResponseRedirect Befehl ausführt:
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,})/$']
I‘ m läuft das gleiche Codemuster in einer anderen Anwendung im Projekt und es läuft ohne Fehler. Kann jemand sehen, was ich falsch mache?
Warum haben Sie den vollständigen Nachrichtentext in der URL? – Sayse
Ja, jetzt, wo ich es ansehe, was ich versucht habe, war ziemlich dumm. – William